【发布时间】:2014-07-04 02:40:04
【问题描述】:
我有一个包含书籍的数据库。在页面上,我有循环打印数据库中的每条记录,其中每本书的标题、作者、出版商、日期和评级。我想在每条记录的底部使用一个删除按钮来删除它。
当我点击删除按钮时,页面被更新,但记录没有被删除。
我试图找到解决这个问题的方法,但还没有找到。我尝试使用数据库表中的 book_id 类别作为索引,以识别每条记录并将其删除,但它不起作用。
这是我的按钮表单的代码,它与 html 代码一起显示:
while ($row = mysqli_fetch_array($result))
{
echo '<div id="forminput">';
$timestamp = strtotime($row['date']);
echo '<div id = "bookpicture">';
echo '<img src="images/Book Cover 8crop.jpg" alt="Book Cover">';
echo '</div>';
echo '<div id = "bookinfo">';
echo '<div id = "titleauthor">';
echo '<h3>' . htmlspecialchars($row['title'], ENT_QUOTES, 'UTF-8') . '</h3>';
echo '<p>' . htmlspecialchars($row['author'], ENT_QUOTES, 'UTF-8') . '</p>';
echo '</div>';
echo '</div>';
$id = htmlspecialchars($row['book_id'], ENT_QUOTES, 'UTF-8');
echo '</div>' ;
echo '<div id = "publisher">' ;
echo '<p>' . 'Published on' . " " . htmlspecialchars(date('F j, Y,', $timestamp),
ENT_QUOTES, 'UTF-8') .
" " . 'by' . " " . htmlspecialchars($row['publisher'], ENT_QUOTES, 'UTF-8') . '</p>';
echo '</div>';
echo '<div id = "formDelete">';
echo '<form name="deleteForm" method="post" id="deleteForm" action="index.php">';
echo '<input type="submit" value="Update" name="myAdd" id="myAdd" style = "width:
100px" required>';
echo '<input type="submit" value="Delete" name="myDelete" id="$id" style = "width:
100px" required>';
echo '</form>';
echo '</div>';
echo '</div>';
echo '<hr>' ;
echo '</div>';
}
?>
这是我的 index.php 文件中的代码。
else if (isset($_POST['myDelete']))
{
$ids = mysqli_real_escape_string($link, $_POST['$id']);
$sql="DELETE FROM readbooks WHERE book_id = '$ids'";
if (!mysqli_query($link, $sql))
{
$error = 'Error with submission: ' . mysqli_error($link);
include 'php/error.html.php';
exit();
}
}
这是更新后的代码。
【问题讨论】:
-
什么不起作用,缩小问题所在
-
当我点击删除按钮时,页面刷新了,但记录没有被删除。
-
表单输入的 value 不是其 id 发送的,因此您在
$_POST['myDelete']中得到“删除”而不是您想要的 id -
您是否在表单中从数据库中获取您的行?如果没有,那就做吧。除了
$id = htmlspecialchars($row['book_id'], ENT_QUOTES, 'UTF-8');没有while,我没有看到任何类似的东西。 -
在您的 php 中,您正在寻找无效的
$_POST['$id']。应该是$_POST['myDelete'].. 其实等等。这还不够。我没有在您的表单中看到您设置名称为“id”的输入的任何地方..可以尝试:<input type='hidden' name='id' value='$id'>,然后使用$_POST['id']
标签: php mysql database button delete-row