我有一个带有两个不同提交按钮的表单。一种是删除MySQL中的相应行,这是在同一页面上完成的,另一种是将行保存到另一个数据库中,这是在单独的页面上完成的。删除操作工作正常,但我无法弄清楚如何将保存表单数据发送到其他页面而不将其放入“操作”值中。我尝试过 JavaScript,但运气不佳。这是一篇有点冗长的文章,但我认为提供的信息越多,就越容易找到解决方案。
这只是保存提交按钮:
echo "<td><input type=\"submit\" name=\"save\" value=\"Save\" onclick=\"this.form.action='publishmod.php'\"></td>";
这是表单代码(主页):
echo "<form name=\"editmod\" method=\"post\">";
echo "<tr class='modlist'>";
echo "<td>".$row['id']."</td>";
echo "<td><div class=\"edit\" id=\"div_1\">".$row['title']."</div></td>";
echo "<td><div class=\"edit\" id=\"div_2\"><a href=".$row['mod_url'].">".$row['mod_url']."</a></div></td>";
echo "<td><div class=\"edit\" id=\"div_3\">".$row['developer']."</div></td>";
echo "<td><div class=\"edit\" id=\"div_4\">".$row['type']."</div></td>";
echo "<td><div class=\"edit\" id=\"div_5\">".$v162."$nbsp".$v164."$nbsp".$v172."</div></td>";
echo "<td><div class=\"edit\" id=\"div_6\">".$row['title'].",$nbsp".$row['developer']."</div></td>";
echo "<td><input type=\"submit\" name=\"save\" value=\"Save\" onclick=\"this.form.action='publishmod.php'\"></td>";
echo "<td><input type=\"submit\" name=\"delete\" value=\"Delete\"></td>";
echo "</tr>";
echo '<input type="hidden" name="id" value="', htmlspecialchars($row['title'], ENT_QUOTES, 'UTF-8'), '" />';
echo '<input type="hidden" name="id" value="', htmlspecialchars($row['mod_url'], ENT_QUOTES, 'UTF-8'), '" />';
echo '<input type="hidden" name="id" value="', htmlspecialchars($row['developer'], ENT_QUOTES, 'UTF-8'), '" />';
echo '<input type="hidden" name="id" value="', htmlspecialchars($row['type'], ENT_QUOTES, 'UTF-8'), '" />';
echo '<input type="hidden" name="id" value="', htmlspecialchars($row['id'], ENT_QUOTES, 'UTF-8'), '" />';
echo "</form>";
}
发布代码(保存操作应该重定向到的页面):
出于 Stack Overflow 目的,省略了变量卫生。
$name = $_GET['title'];
$desc = "Installation tutorial for '.$name.'";
$url = ereg("^[A-Za-z_\-]+$", $name) + ".php";
$keywords = "'.$name.', '.$dev.'";
$type = $_GET['type'];
$link = $_GET['mod_url'];
$dev = $_GET['developer'];
$id = $_GET['id'];
// Query
$savequery = "INSERT INTO search (title, description, url, keywords, type, mod_url, developer, v162, v164, v172)
VALUES ('$name', '$desc', '$url', '$keywords', '$type', '$link', '$dev', '$v162', '$v164', '$v172')";
// Mod file creation
$file = ereg("^[A-Za-z_\-]+$", $name) + ".php";
$handle = fopen($file, 'w');
$data = '<?php
$title = "'. $name. '";
$keywords = "'. $name. ','. $developer. '";
$description = "How to install '. $name. ' for PC and Mac.";
include("templates/modheader.php");
include("templates/modfooter.php");
?>';
$save = $dbsave->query($savequery) or die(mysqli_error($dbsave));
// Run creation
echo $save;
fwrite($handle, $data);
print " mod file created!";
fclose($handle);
?>
最佳答案
不要将其发送到其他页面。使用一页和分支 if
(或 switch
或其他)声明。
例如
if (isset($_POST['save'])) {
include('save.php');
} elseif (isset($_POST['delete'])) {
include('delete.php');
} else {
# logic for when the page is arrived at without the form being submitted with a submit button
}
<小时/>
顺便说一句。一个<form>
可能不是 <tr>
的父元素,并且没有可能具有 <td>
的元素作为子元素也可能有 <input>
作为子元素,您会发现某些浏览器会移动元素以使它们可以被接受,但这种方式会破坏您的表单。写valid HTML。
关于javascript - 一种形式中的两种不同 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20720998/