2012-05-26 87 views
0

我想解決我的私人消息部分我的網站的刪除功能,基本上它刪除郵件罰款,但我現在試圖讓它不僅刪除郵件,但是通過while循環連接的所有其他回覆消息都是唯一的message_id,但每個消息的「對話」(如涉及回覆的地方)都有一個message_unique,它對每個消息都是相同的id消息通過彼此連接。更新表,通過while和for循環

下面是下面的刪除代碼,它需要做的就是將一個變量設置爲回覆來自收件人的變量,或者將刪除變量設置爲1,如果它形成發件人,希望您能明白我的意思,此刻它同時設置sender_deleted和recipient_deleted爲1,這不應該

if (isset($_POST['delete_inbox'])) { 

foreach($_POST['inbox_select_box'] as $message_unique) //loop through the checkboxes 
{ 

$query = mysql_query("SELECT * FROM messages WHERE message_unique = $message_unique"); 

     while($row = mysql_fetch_assoc($query)){ 
      extract($row); 

if ($recipient_id == $user_id){ 
    $sql = "UPDATE messages SET recipient_deleted = '1' WHERE message_unique = '$message_unique'"; 
$result=mysql_query($sql); 
} 
else{ 
    $sql = "UPDATE messages SET sender_deleted = '1' WHERE message_unique = '$message_unique'"; 
$result=mysql_query($sql); 
} 


     } 

} 

$ user_id是對誰是登錄的用戶的ID全局變量,感謝所有幫助你們可以給我

+0

究竟是什麼問題?數據庫沒有被更新,你會得到錯誤...? – chucktator

+0

嗨,沒問題是它沒有正確更新數據庫,它將recipient_deleted和sender_deleted都設置爲1,只應將其中一個設置爲1,該部分由if語句控制 – Arken

+0

但它是在正確的行上執行錯誤的更新?所以沒有問題,哪些消息需要更新? – chucktator

回答

1

我假設你的主鍵叫做message_id。 嘗試這樣的:

if (isset($_POST['delete_inbox'])) { 
    foreach($_POST['inbox_select_box'] as $message_unique) //loop through the checkboxes 
    { 
     $query = mysql_query("SELECT * FROM messages WHERE message_unique = $message_unique"); 
     while($row = mysql_fetch_assoc($query)){ 
      extract($row); 
      $message_id = $row['message_id']; 
      if ($recipient_id == $user_id){ 
       $sql = "UPDATE messages SET recipient_deleted = '1' WHERE message_id = '$message_id'"; 
      } 
      else 
      { 
       $sql = "UPDATE messages SET sender_deleted = '1' WHERE message_id = '$message_id'"; 
      } 
      $result = mysql_query($sql); 
     } 
    } 
} 

的問題是,你是在每一個消息在線程每次設定值。您需要使用每行消息的實際ID來執行更新。請注意:如果您只是在mysql_query()中設置了一個SQL字符串,那麼您應該只在if() ... else ...語句之外執行方法調用一次。

+0

確定輝煌的,這很好,只是爲了節省一些額外的時間,如果你不介意,如果我也要將每個消息/答覆插入到一個單獨的表,如mail_trash,我可以在if else',或實際上在if else中 - 這裏是插入代碼 - '$ sql_trash = mysql_query(「INSERT INTO mail_trash(message_id,reply_id,message_unique,deleter_id,sender_id,recipient_id,mail_date_sent,time_mail_deleted) VALUES('$ message_id ','$ reply_id','$ message_unique','$ user_id','$ sender_id','$ recipient_id','$ mail_date_sent',now())「) 或die(mysql_error());' – Arken

+0

You還應該在'if()... else ...'語句之後加上,因爲它應該在兩種情況下完成。否則,你會有重複的代碼,只有在絕對沒有其他方式時才應該這樣做。 – chucktator

+0

好,非常感謝您的幫助 – Arken