2013-04-29 143 views
0

我正在做一个登录系统的网站,每个用户都可以插入和查看他的日志。删除按钮(删除phpmyadmin表中的行)

现在我试图做一个删除按钮,单击时从表中删除了整行。

它工作正常,因为当我点击“DELETE BUTTON”并检查从你的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

不需要“使用mysql.it已弃用 – underscore 2013-04-29 17:17:45

回答

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`"); 
+0

感谢您的回复。我移动了查询代码上方的删除代码,它工作正常! – user2307236 2013-04-29 18:14:19

0

只是重定向到你的页面上删除后或再次使用select查询,一旦你删除的数据获取新的数据。做这样的事

if(isset($_POST['delete'])) 
{ 
    mysql_query("DELETE FROM `logs` WHERE `id` = '".$_POST['id']."' "); 
    header("location:yourpage.php"); 
} 
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语句的上方,因为在回送东西后您无法更改标题。

+0

”“您的表单中没有任何操作,看起来您想要提交到同一页面 – user2307236 2013-04-29 18:06:48

+0

@ user2307236解决了这个问题吗? – 2013-04-29 18:08:59

0

在删除按钮命中后您的页面是否刷新?尝试添加清除缓存命令清除&到您的代码。