2014-03-29 19 views
5

Ich habe einen Posteingang Code zum Löschen von Nachrichten.PHP Löschen Posteingang funktioniert nicht richtig

Wenn ich eine einzelne Nachricht wähle löscht sie alle.

Wie kann ich das beheben?

Hier ist mein Code für delete_message.php:

$inboxbtn = $_POST['deleteinbox']; 
$outboxbtn = $_POST['deleteoutbox']; 

if($inboxbtn){ 
    $selectall = $_POST['selectall']; 
    if($selectall){ 
     $query = mysql_query("SELECT * FROM messages WHERE to_user='$user'"); 
     while ($row = mysql_fetch_assoc($query)){ 
      mysql_query("UPDATE messages SET to_delete='1' WHERE to_user='$user'"); 
     } 
     echo "All messages have been deleted."; 
    } 
    else{ 
     $query = mysql_query("SELECT * FROM messages WHERE to_user='$user'"); 
     while ($row = mysql_fetch_assoc($query)){ 
      $msg_id = $row['id']; 
      $value = "cb"."$msg_id"; 
      $checkbox = $_POST[$value]; 
      if ($value){ 
      mysql_query("UPDATE `messages` SET `to_delete`='1' WHERE `to_user`='$user' AND `id`='$msg_id'");  
      } 
     }  
       echo "The selected messages have been deleted."; 
    } 

}elseif ($outboxbtn){ 
    $selectall = $_POST['selectall']; 
    if($selectall){ 
     $query = mysql_query("SELECT * FROM messages WHERE from_user='$user'"); 
     while ($row = mysql_fetch_assoc($query)){ 
      mysql_query("UPDATE messages SET from_delete='1' WHERE from_user='$user'"); 
     } 
     echo "All messages have been deleted."; 
    } 
    else{ 
    $query = mysql_query("SELECT * FROM messages WHERE from_user='$user'"); 
     while ($row = mysql_fetch_assoc($query)){ 
      $msg_id = $row['id']; 
      $value = "cb"."$msg_id"; 
      $checkbox = $_POST[$value]; 
      if ($value){ 
      mysql_query("UPDATE messages SET from_delete='1' WHERE to_user='$user' AND id='$msg_id'"); 
      } 
     } 
      echo "The selected messages have been deleted.";  
    } 
} 
else 
    echo "Choose a message to delete."; 

Und hier ist der Code in inbox.php dass die Kontrollkästchen

$query = mysql_query("SELECT * FROM messages WHERE from_user='$user' AND from_delete='0' ORDER BY id DESC"); 
      $numrows = mysql_num_rows($query); 
      if ($numrows != 0){ 
      echo "<form action='delete_message.php' method='POST'>"; 
      echo "<div class='messages'> 
        <div class='leftside'><input type='checkbox' name='selectall'><input type='submit' name='deleteoutbox' value='Delete' class'button'></div> 
        <div class='rightside'>Date</div> 
        Subject And Message 
        <div class='clear'></div> 
        <hr> 
       </div>"; 
       while ($row = mysql_fetch_assoc($query)){ 
        $msg_id = $row['id']; 
        $msg_to_user = $row['to_user']; 
        $msg_to_id = $row['to_id']; 
        $msg_from_user = $row['from_user']; 
        $msg_from_id = $row['from_id']; 
        $msg_subject = $row['subject']; 
        $content = nl2br($row['content']); 
        $msg_date = $row['date']; 
        $msg_from_delete = $row['from_delete']; 
        $msg_to_delete = $row['to_delete']; 

        if(!$msg_from_delete){ 
         echo "<div class='messages'>"; 
         echo "<div class='leftside'> 
         <input type='checkbox' name='cb$msg_id' value='$msg_id'> 
         <a href='profile.php?id=$msg_to_id' target='_blank'>$msg_to_user</a> 
         </div>"; 

         echo "<div class='rightside'>$msg_date</div>"; 

         echo "<div id='center' style='margin-left:150px; margin-right:150px;'> 

         <span class='toggle'><a href='#' onClick='return false'>$msg_subject</a></span> 
         <div class='hiddenDiv'> 
         <br /><hr> 
          <b>$smiles </b> 
          <br><br> 


         </div> 
         </div>"; 

         echo "<div class='clear'>"; 
         echo "<br /><br /><hr>"; 
         echo "</div></div>"; 
        } 
       } 
       echo "</form>"; 
      } 
      else 
       echo "You Have No Messages In Your Outbox" 

dann für die Nachrichten im Posteingang ist es das gleiche ist wie der Postausgang aber im Posteingang.

Wie kann ich das beheben?

Antwort

1

Anstatt eine Variable direkt zu bewerten, die mit Daten gefüllt wurde, die von POST kommen, GET globale Variablen, benutze zuerst die Funktion isset(), um zu überprüfen, ob sie irgendeinen Wert erhalten haben, und dann den Rückgabewert dieser Isset-Funktion geben kann wenn zur Bewertung.

eg : $inboxbtn = $_POST['deleteinbox']; 
$outboxbtn = $_POST['deleteoutbox']; 
if(isset($inboxbtn)){ 
    $selectall = $_POST['selectall']; 
    if(isset($selectall)){ 

} 
} 

ich denke, u Problem in dieser bekommen, check this out .... http://in2.php.net/isset https://www.virendrachandak.com/techtalk/php-isset-vs-empty-vs-is_null/

+0

Geändert zu Issets, aber es hat immer noch nicht funktioniert. – user3474238

0

auch ich glaube, Ihre Logik, um die Nachricht zu aktualisieren, falsch zu löschen ist.

$query = mysql_query("SELECT * FROM messages WHERE to_user='$user'"); 
     while ($row = mysql_fetch_assoc($query)){ 
      $msg_id = $row['id']; 
      $value = "cb"."$msg_id"; 
      $checkbox = $_POST[$value]; 
      if ($value){ 
      mysql_query("UPDATE `messages` SET `to_delete`='1' WHERE `to_user`='$user' AND `id`='$msg_id'");  
      } 
     } 

in dem obigen Code, den Sie Variable "$ value" in if() Zustand prüfen, wird diese Variable für jede Schleife bekam einen Wert

$msg_id = $row['id']; 
$value = "cb"."$msg_id"; 

und durchläuft, wenn, so da while-Schleife Durchläuft jeden Datensatz, der zu einem bestimmten Benutzer gehört, alle seine Nachrichten werden aktualisiert, um DELETE zu erhalten.

if ($value){ 
      mysql_query("UPDATE `messages` SET `to_delete`='1' WHERE `to_user`='$user' AND `id`='$msg_id'");  
      } 

haben einen Blick auf ur Logik ....

+0

Ich bin bis verwirrt. Welchen Code soll ich dann verwenden? – user3474238

+0

Ah. Ich sehe das Problem, aber wie kann ich es beheben? – user3474238

0

In delete_message.php unten ist ur-Code ..

$value = "cb"."$msg_id"; 
      $checkbox = $_POST[$value]; 
      if ($value){ 
      mysql_query("UPDATE `messages` SET `to_delete`='1' WHERE `to_user`='$user' AND `id`='$msg_id'");  
      } 

die Codeänderung unten entsprechend als geben ....

$value = "cb"."$msg_id"; 
       if (isset($_POST['$value'])){ 
       mysql_query("UPDATE `messages` SET `to_delete`='1' WHERE `to_user`='$user' AND `id`='$msg_id'");  
       } 
+0

Versucht dies, aber es hat nichts gelöscht. – user3474238

+0

Irgendeine Idee, es zu reparieren? – user3474238