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