删除按钮(删除phpmyadmin表中的行)

时间:2013-04-29 17:14:53

标签: php

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

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

它运行正常,因为当我单击“删除按钮”并检查来自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 个答案:

答案 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;清除代码中的缓存命令。