我的HTML:
<td>
<button type="submit" id="delete" name="delete">Verwijderen</button>
</td>
我桌子上的每条记录都有这个按钮。我打算在按下相应的按钮时删除记录。每次按此按钮时,都会出现此错误(注意:未定义的索引:第3行的C:\ xampp \ htdocs \ FESPHP \ delete.php中的product_nr )。
PHP代码:
<?php
if (isset($_POST['delete'])) {
$product_nr = mysqli_real_escape_string($con, $_POST['product_nr']);
$deleteq = 'DELETE FROM products WHERE product_nr = "' . $product_nr . '";';
echo $deleteq;
if (!mysqli_connect_errno()){
if (mysqli_query($con, $deleteq)) {
echo "Product deleted";
}
}
var_dump($product_nr);
}
?>
我似乎需要帮助尝试检索属于我要删除的记录的product_nr,但我也可能做了很多其他错误。关于其他事情的任何提示也不胜感激。
答案 0 :(得分:1)
您应该将按钮放在以下格式中:
<td>
<form action="url_to_delete_script.php" method="post">
<input type="hidden" name="product_nr" value="id_of_record"/>
<button type="submit" name="delete">Verwijderen</button>
</form>
</td>
这样,当您使用按钮提交表单时,将对指定的脚本进行调用。表单标记内的所有信息都将发送到delete_script。所以你会在$_POST["product_nr"]
中找到记录的id;这是因为我已经指定了一个名为&#34; product_nr&#34;。
您可以使用PHP脚本填写的记录ID(变量id_of_record
)。无论如何,您可能正在使用某种for循环来循环数据。
我真的不知道你为什么要对$_POST["delete"]
进行额外检查,但是如果你想这样做,你也应该为此做另一个领域。或者你也可以改变&#39;动作的网址&#39;到url_to_delete_script.php?delete
,但我不确定。
其他可能的解决方案
老实说,我几乎没有使用过这种类型的记录删除。因为你有很多form
标签,所以有很多重复的代码。我更喜欢使用jQuery ajax来解决这个问题。
我在jQuery中的解决方案应该是:
<td>
<button type="button" onclick="removeRecord(id_of_record)">Verwijderen</button>
</td>
<script>
function removeRecord(recordId){
$.post("url_to_delete_script.php",
{ product_nr: recordId },
function(data){
alert("The record with ID " + recordId + " was removed!");
}
);
}
</script>
在此解决方案中,您仍然需要进行某种表重新加载。因为在服务器端删除了记录,但这并没有立即反映在表中。
我更喜欢这种方法,但这并不意味着它是最好的解决方案。
答案 1 :(得分:0)
使用帖子获取数据时,您首先需要在表单中提交数据,然后您需要使用元素名称访问它,在您的情况下&#39;删除&#39;。在您的情况下,我建议您将所有按钮添加到表中并从那里开始。