删除每条记录的按钮。点击时未定义的变量?怎么样?

时间:2014-05-12 14:14:55

标签: php

我的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,但我也可能做了很多其他错误。关于其他事情的任何提示也不胜感激。

2 个答案:

答案 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;。在您的情况下,我建议您将所有按钮添加到表中并从那里开始。