0

我正在做一个带有登录系统的网站,每个用户都可以插入和查看他的日志。

现在我正在尝试制作一个删除按钮,当单击表格中的整行时,该按钮将被删除。

它工作正常,因为当我单击“删除按钮”并检查 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']."' ");
    } 


?>
4

4 回答 4

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 语句上方,因为在回显内容后您无法更改标题。

于 2013-04-29T17:20:52.073 回答
0

Does your page refresh after the delete button is hit? Try adding refreshing & clearing of cache commands to your code.

于 2013-04-29T17:35:25.403 回答
0

删除后只需重定向到您的页面,或者在删除数据后再次使用选择查询获取新数据。做这样的事情

if(isset($_POST['delete']))
{ 
    mysql_query("DELETE FROM `logs` WHERE `id` = '".$_POST['id']."' ");
    header("location:yourpage.php");
} 
于 2013-04-29T17:17:08.920 回答
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'");

您在删除行之前查询所有行。

还...

请记下萨米莎上面的评论。

我建议在您的表中添加一个“已删除”列,并在“删除”行时向“已删除”列添加时间戳,而不是删除整行。然后,您的查询将如下所示:

$entries = mysql_query("SELECT `id`,`date`, `location`, `description` FROM `logs` WHERE `username` = '$current_user' AND `deleted` != `NULL`");
于 2013-04-29T17:21:34.453 回答