2014-03-29 4 views
5

메시지를 삭제할 수있는받은 편지함 코드가 있습니다.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."; 

을 그리고 여기받은 편지함 메시지를 다음의 체크 박스를

$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" 

을 가지고 inbox.php의 코드는 다음과 같습니다 여기

는 delete_message.php 내 코드입니다 보낼 편지함이지만받은 편지함 형식입니다.

어떻게 해결할 수 있습니까?

답변

1

POST에서 오는 데이터로 채워진 변수를 직접 계산하는 대신 전역 변수를 얻고 먼저 isset() 함수를 사용하여 값이있는 날씨를 확인한 다음이 isset 함수의 반환 값을 제공 할 수 있습니다 ~에 평가.

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

} 
} 

내가 u는이에 문제를 가지고 생각 http://in2.php.net/isset https://www.virendrachandak.com/techtalk/php-isset-vs-empty-vs-is_null/

+0

이네트로 변경되었지만 여전히 작동하지 않았습니다. – user3474238

0

도 내가 당신의 논리가 잘못 삭제하는 메시지를 업데이트 할 생각 .... 이것 좀 봐.

$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'");  
      } 
     } 

위의 코드에 당신이 만약() 상태 변수 "$ 값을"확인되어, 각 루프의 뜻이 변수는 어떤 값

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

을 얻고 경우 루프 동안 때문에, 그래서 통과 특정 사용자에게 속한 각 레코드를 반복하여 모든 메시지가 DELETE되도록 업데이트됩니다.

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

그에 따라 아래로 정제 UR 로직에보고 .... 하나 아래에서 delete_message.php

+0

나는 혼란 스럽다. 그러면 어떤 코드를 사용해야합니까? – user3474238

+0

아. 문제가 보이지만 어떻게 수정합니까? – user3474238

0

UR 코드이다 ..

$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'");  
      } 

변경 코드가 ....

$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

시도했지만 아무것도 삭제하지 않았습니다. – user3474238

+0

고쳐 주신가요? – user3474238