【问题标题】:Deleting row in a table with delete button in PHP使用PHP中的删除按钮删除表中的行
【发布时间】:2013-05-20 17:52:28
【问题描述】:

我有一些来自数据库的数据,我在最后一列中有一个删除按钮。我想删除单击删除按钮的行。但是每当我点击删除按钮时,即使我点击第一行,也只会删除最后一行。

我的删除功能:

if(isset($_POST['formDelete'])){
if(isset($_POST['quoteid']) && !empty($_POST['quoteid'])){
    require_once('config.php');
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE) 
    or die ('Cannot connect to db');
    $quoteid = $_POST['quoteid'];
    echo "DELETE FROM quotes WHERE quoteid =".$quoteid;
    $result = $conn->query("DELETE FROM quotes WHERE quoteid =".$quoteid);
}

表格代码:

<form action="<?php $_PHP_SELF ?>" method="post">
<?php
    require_once('config.php');
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE) 
    or die ('Cannot connect to db');
    $result = $conn->query("SELECT quoteid, quote, cat.catid catid, cat.name cat, scat.catid catid, scat.name scat, author FROM quotes q
                           INNER JOIN category cat ON q.catid = cat.catid LEFT OUTER JOIN category scat ON q.subcatid = scat.catid order by quoteid");
    echo "<table border='1px solid black'>";
    echo "<tr><td><b>Category</b></td><td><b>Sub-Category</b></td><td><b>Quote</b></td><td><b>Author</b></td></tr>";
    while ($row = $result->fetch_assoc()) {
        echo "<tr><td>$row[cat]</td><td>$row[scat]</td><td><input type='hidden' id='quoteid' name='quoteid' value=$row[quoteid] />$row[quote]</td><td>$row[author]</td>
        <td><input type='submit' name='formDelete' id='formDelete' value='Delete' /></td></tr>";
    }
    echo "</table>";
?>
</form>

我正在尝试根据quoteid删除。

【问题讨论】:

  • quote id 是一个整数吗?
  • 我不是 PHP 极客,但结尾处的 die 不是结束脚本吗? echo "DELETE FROM quotes WHERE quoteid =".$quoteid;die;
  • 您在代码摘录的第 7 行有一个 die;
  • 我不明白如果它死了怎么能删除任何东西
  • Die - 输出消息并终止当前脚本php.net/manual/en/function.exit.php

标签: php mysql forms


【解决方案1】:

这个想法是为每个删除按钮创建一个单独的表单,以便发送正确的 quoteid 值

<?php
    require_once('config.php');
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE) 
    or die ('Cannot connect to db');
    $result = $conn->query("SELECT quoteid, quote, cat.catid catid, cat.name cat, scat.catid catid, scat.name scat, author FROM quotes q
                           INNER JOIN category cat ON q.catid = cat.catid LEFT OUTER JOIN category scat ON q.subcatid = scat.catid order by quoteid");
?>
    <table border='1px solid black'>
        <tr>
            <td>
                <b>Category</b>
            </td>
            <td>
                <b>Sub-Category</b>
            </td>
            <td>
                <b>Quote</b>
            </td>
            <td>
                <b>Author</b>
            </td>
        </tr>

        <?php
        while ($row = $result->fetch_assoc()) {
            ?>
            <tr>
                <td>
                    <?php echo $row['cat']; ?>
                </td>
                <td>
                    <?php echo $row['scat']; ?>
                </td>
                <td>
                    <?php echo $row['quote']; ?>
                </td>
                <td>
                    <?php echo $row['author']; ?>
                </td>
                <td>
                    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method='post' style="display: inline;">
                        <input type='hidden' id='quoteid' name='quoteid' value="<?php echo $row['quoteid']; ?>" />
                        <input type='submit' name='formDelete' id='formDelete' value='Delete' />
                    </form>
                </td>
            </tr>
            <?php
        }
        ?>
    </table>

【讨论】:

  • 感谢 chepe 我已按照您的建议进行了更改,现在效果很好。
猜你喜欢
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多