【问题标题】:PHP Delete inbox not working properlyPHP删除收件箱无法正常工作
【发布时间】:2014-03-29 07:26:01
【问题描述】:

我有一个用于删除邮件的收件箱代码。

如果我选择一条消息,它会删除所有消息。

我该如何解决这个问题?

这是我的 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.";

这是 inbox.php 中带有复选框的代码

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

然后对于收件箱消息,它与发件箱相同,但采用收件箱形式。

我该如何解决这个问题?

【问题讨论】:

    标签: php mysql inbox


    【解决方案1】:

    不是直接评估一个由来自 POST 的数据填充的变量,而是获取全局变量,首先使用 isset() 函数检查天气他们得到了任何值,然后可以将这个 isset 函数的返回值赋予如果用于评估。

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

    我认为你在这方面遇到了问题,看看这个.... http://in2.php.net/isset https://www.virendrachandak.com/techtalk/php-isset-vs-empty-vs-is_null/

    【讨论】:

      【解决方案2】:

      我也认为您更新要删除的消息的逻辑是错误的。

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

      在上面的代码中,你在 if() 条件下检查变量“$value”,每个循环的这个变量都会得到一些值

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

      并通过 if,因此由于 while 循环将遍历属于特定用户的每条记录,因此他的所有消息都被更新以获取 DELETE。

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

      看看你的逻辑......

      【讨论】:

      • 我很困惑。那我应该使用什么代码?
      • 啊。我看到了问题,但我该如何解决?
      【解决方案3】:

      在delete_message.php下面一个是你的代码..

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

      【讨论】:

      • 试过了,但没有删除任何东西。
      • 有什么解决办法吗?
      猜你喜欢
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多