【发布时间】:2017-02-11 21:59:06
【问题描述】:
我将表单的所有输出放在 while 循环中,但每当我尝试运行 delete 时,它就会停止工作。我的数据库还有一个是 id,它是独一无二的。我正在尝试使用 id 字段进行删除,但没有显示错误并且它也不起作用。如果我将代码放在 while 循环中,它会自行删除并一一显示消息。我怎样才能让它在循环外删除?
<?php
session_start();
?>
<html>
<body>
<?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());
mysqli_select_db($connection, "dbase1") or die("db not selected" . mysqli_error());
$sql = " SELECT * FROM tab";
$result = $connection->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
?>
<form class="boxed" style ="border: 4px solid black ; text-align: center; action ="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<h1> Message </h1>
<?php echo "<br>" . "Name: " . $row["name"] . "<br>" . " Email : " . $row["email"] . "<br>" . "Phone # " . $row["phone"] . "<br>" . "Message : " . $row["text"] . "<br>"; ?>
<input type="submit" class="button" name="delete" value="delete" style =" background-color: grey;
border: none;
color: white;
padding: 15px 70px;
margin: 15px 0px;
cursor: pointer;"/>
</form>
<?php
}
}
if (isset($_POST['delete'])) {
echo "hry";
$sql = " DELETE FROM tab WHERE id=" . $row["id"];
$result = $connection->query($sql);
}
?>
</body>
<html>
【问题讨论】:
-
第一件事 - 请格式化您的代码。你发布的内容太可怕了。您必须了解表单提交的工作原理。您在循环中创建表单,但表单除了提交按钮之外不提交任何数据。那么你怎么知道要删除哪条记录呢?检查此w3schools.com/php/php_forms.asp 改进您的代码,我会提供帮助。
-
对不起,我是 php 的初学者,但是你建议我卡住了,你需要我缩进代码吗?
-
除了while循环还有其他方法可以通过删除按钮带来多个数据库条目,是的,再次感谢您的帮助!