提交表单后,记录不会从数据库中删除

时间:2017-02-11 21:59:06

标签: php mysql database

我将所有表单输出放在 while 循环中,但每当我尝试运行delete时它都会停止工作。我的数据库还有一个 id ,这是唯一的。我试图使用 id 字段删除,但没有错误显示,它也无法正常工作。如果我将代码放在 while 循环中,它会自行删除并逐个显示消息。如何让它在循环外删除?

/deep/

1 个答案:

答案 0 :(得分:0)

当然,你应该更好地格式化你的代码,为了相同的目的使用相同的引号而不是混合' vs ",使用缩进来使代码可读。还要尽量避免使用内联样式,并使用类来设置样式。

对于功能本身 - 您必须通过提交表单对要删除的内容进行一些“标识”。如果所有表单都相同,脚本将如何知道您要删除哪条记录? 还要考虑为什么将记录删除代码放到脚本的开头而不是结尾。在您的场景中:您单击删除,脚本将再次显示所有记录(表单),然后删除其中一个(因此它基本显示不再存在的roceord)。如果记录删除代码在开头,则删除记录,然后循环显示它应该是什么。

这些都非常基础,所以你应该更多地学习HTML& PHP工作......

改进的功能代码:

<?php
require_once 'login.php';
$connection = new mysqli($db_hostname, $db_username, $db_password, $db_database);
if (!$connection) {
    die('unable to connect to mysqli:' . mysqli_error());
}
//not neccesary when the db is selected during connection
//mysqli_select_db($connection, 'dbase1') or die('db not selected' . mysqli_error());

// submited form process
if (isset($_POST['submit']) && $_POST['submit'] == 'delete') {

    echo "hry";

    $sql    = 'DELETE FROM tab WHERE id=' . $_POST['id'];
    $result = $connection->query($sql);

}
?>

<html>
<body>
    <?php
    $sql = 'SELECT * FROM tab';
    $result = $connection->query($sql);

    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {

            echo '<h1> Message </h1>';
            echo '<br>' . 'Name: ' . $row['name'];
            echo '<br>' . ' Email: ' . $row['email'];
            echo '<br>' . ' Phone # ' . $row['phone'];
            echo '<br>' . ' Message: ' . $row['text'];
            echo '<br>';

            echo '<form class="boxed" action="' . $_SERVER['PHP_SELF'] . '" method="post" style="...">';
            echo '<input type="hidden" name="id" value="' . $row["id"] . '" />';
            echo '<input type="submit" class="button" name="submit" value="delete" style="..." />';
            echo '</form>';
        }
    }
    ?>
</body>
<html>