我正在建立一个带登录系统的网站,每个用户都可以插入并查看他的日志。
现在我正在尝试创建一个删除按钮,当单击时,表中的整行将被删除。
它运行正常,因为当我单击“删除按钮”并检查来自phpmyadmin shell的行时,该行不再存在。
问题是,在第一次点击时,该行仍然可以在网页中看到,只有当我再次点击该按钮时,它才会消失!
这是我的代码: -
<?php
$entries = mysql_query("SELECT `id`,`date`, `location`, `description` FROM `logs` WHERE `username` = '$current_user'");
if(mysql_num_rows($entries)==0){
echo 'No entries, yet.';}
else{
while($entries_row = mysql_fetch_assoc($entries)){
echo "
<hr>
<form action='' method='post'>
<input type='hidden' name='id' value='".$entries_row['id']."'>
<table align='center' border='1' width='80%' cellpadding='5'>
<tr>
<td width='20%'><strong>Date:</strong></td>
<td>" . $entries_row['date'] . "</td>
</tr>
<tr>
<td width='20%'><strong>Location:</strong></td>
<td>" . $entries_row['location'] . "</td>
</tr>
<tr>
<td width='20%'><strong>Description:</strong></td>
<td>" . $entries_row['description'] . "</td>
</tr>
<tr>
<td colspan='2' align='right'><input type='submit' name='delete' value='Delete Entry'></td>
</tr>
</table>
</form>
";
}
}
}else{
echo 'Could not connect at this time.';
}
if(isset($_POST['delete']))
{
mysql_query("DELETE FROM `logs` WHERE `id` = '".$_POST['id']."' ");
}
?>
答案 0 :(得分:1)
您的表单中没有任何操作。看起来您想要提交到同一页面。
<form action='THISPAGE.php' method='post'>
然后只需将$ _POST ['id']设置为一个变量,因为之前MySQL已经与数组混淆了。并在查询后重定向到另一个页面,这样就不会给你一个不存在的id的形式。
if(isset($_POST['delete']))
{
$id = $_POST['id'];
mysql_query("DELETE FROM `logs` WHERE `id` = '$id' ");
header("Location: someOtherPage.php");
exit(); //Exit to force redirect
}
您可能需要将isset代码移动到echo语句之上,因为在回显了stuff之后您无法更改标头。
答案 1 :(得分:0)
删除数据后,只需在删除后重定向到您的页面,或再次使用选择查询获取新数据。做这样的事情
if(isset($_POST['delete']))
{
mysql_query("DELETE FROM `logs` WHERE `id` = '".$_POST['id']."' ");
header("location:yourpage.php");
}
答案 2 :(得分:0)
我认为您需要将删除代码移到行查询
之上if(isset($_POST['delete']))
{
mysql_query("DELETE FROM `logs` WHERE `id` = '".$_POST['id']."' ");
}
$entries = mysql_query("SELECT `id`,`date`, `location`, `description` FROM `logs` WHERE `username` = '$current_user'");
在删除行之前,您正在查询所有行。
另外......
请注意Samitha上面的评论。
我建议在表中添加“已删除”列,并在“删除”行时向“已删除”列添加时间戳,而不是删除整行。然后,您的查询将如下所示:
$entries = mysql_query("SELECT `id`,`date`, `location`, `description` FROM `logs` WHERE `username` = '$current_user' AND `deleted` != `NULL`");
答案 3 :(得分:0)
点击删除按钮后页面是否刷新?尝试添加刷新&amp;清除代码中的缓存命令。