2013-04-29 146 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

在刪除按鈕命中後您的頁面是否刷新?嘗試添加清除緩存命令清除&到您的代碼。