我目前正在编写Web应用程序以捕获联系人数据。
它可以显示mysql数据库中的表(请参阅SELECT语句)。 现在我想动态生成用于从数据库中删除特定行的按钮。 它可以显示按钮,但它们无法正常工作。
我使用变量$ id来命名不同的按钮“rowButton1”,“rowButton2”等等。 在下一步中,如果单击该按钮,我想删除该行。
如何在下面的if语句中找到特定行中的按钮?
$res = mysql_query("SELECT id, type_id, title, visible FROM field ORDER BY step, pos");
echo '<table border="1">';
while ($row = mysql_fetch_assoc($res)) {
$id = $row['id'];
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['type_id'] . "</td>";
echo "<td>" . $row['title'] . "</td>";
echo "<td>" . $row['visible'] . "</td>";
echo('<td><input type="submit" name="rowButton'.$id.'" value="Delete"/> </td>');
}
echo "</table>";
if(post('rowButton'.$id) =="Delete"){
$del = mysql_query("DELETE FROM field WHERE id=$id");
echo'<p>Entry was succesfully deleted</p>';
}
答案 0 :(得分:0)
基本上你必须通过javascript指定当按钮被触发时会发生什么(即获取按钮的id,然后ajax调用你的php脚本),然后在单独的脚本中处理删除。现在我认为你正在混合你网站的前端和后端。 A brief explanation of frontend vs backend。
答案 1 :(得分:0)
您需要移动if
内的while
以及其他一些调整...
$res = mysql_query("SELECT id, type_id, title, visible FROM field ORDER BY step, pos");
echo '<table border="1">';
while ($row = mysql_fetch_assoc($res)) {
if(post('rowButton'.$row['id']) =="Delete"){
$del = mysql_query("DELETE FROM field WHERE id=" . $row['id']);
$deleted = '<p>Entry ' . $row['id'] . ' was succesfully deleted</p>';
} else {
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['type_id'] . "</td>";
echo "<td>" . $row['title'] . "</td>";
echo "<td>" . $row['visible'] . "</td>";
echo '<td><input type="submit" name="rowButton'. $row['id'] .'" value="Delete"/> </td>';
echo "</tr>";
}
}
echo "</table>";
echo $deleted;
答案 2 :(得分:0)
要点:
1)您发布的代码有一个起始<tr>
标记,但它永远不会结束
2)如果你使用按钮生成行和列,那么按钮应该由JavaScript,jQuery处理什么操作。
3)你没有提到你的post()
正在做什么,所以不清楚它为什么或如何返回一个字符串&#34;删除&#34;
你应该做什么?
1)在创建它们时给每个按钮一个唯一的id,在你的情况下,你将从{mysql}获得id
2)还在按钮标记中插入onmousedown = "some_function(this.id)"
3)在函数中获取要删除的行的id
4)通过jQuery $.post()
5)获取php中的id将其插入到sql查询中以删除行
你完成了!! 希望你明白了
答案 3 :(得分:0)
在PHP中,提交输入类型将执行一个知道<form>
标记的php文件。 See
您要发送到将要执行的php文件的所有数据必须位于表单标记之间。 例如:
<html>
<body>
<form action="extraction.php" method="post">
Number 1: <input type="text" name="en1"><br>
Number 2: <input type="text" name="en2"><br>
<input type="submit">
</form>
<form action="sum.php" method="post">
Number 1: <input type="text" name="sn1"><br>
Number 2: <input type="text" name="sn2"><br>
<input type="submit">
</form>
</body>
</html>
在第一个块中,form标签将执行extract.php文件并传递en1和en2。 在第二个表单块中,标记将通过传递sn1和sn2来执行sum.php文件。
你不能将en1或en2值传递给sum.php,同样也不能将sn1和sn2传递给extract.php。
因此,基本上您需要每行的表单标记或使用JavaScript onclick
触发器。
答案 4 :(得分:0)
为什么不使用
if(isset($_POST['rowButton'.$id]))
{ }
取代
if(post('rowButton'.$id) =="Delete")
{ }