【问题标题】:Inbox, Outbox delete error- Please help me收件箱,发件箱删除错误-请帮助我
【发布时间】:2014-03-30 06:16:37
【问题描述】:

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

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

我该如何解决这个问题?

这是我的 delete_message.php 代码:

<?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 中带有复选框的代码

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

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

我该如何解决这个问题?

【问题讨论】:

  • 表单上的输入输出元素丢失
  • 什么意思?他们会去哪里?
  • 他们绝对 100% 在阿拉斯加
  • 什么?!???请你解释清楚。
  • 您的代码有几个问题。首先,在else 块中,您正在从消息表中获取,在while 循环中,您正在检查id$_POST 是错误的。理想情况下,您应该做的是,使用 foreach 循环遍历检查的 ids 并更新。你从哪里得到$user?您还应该检查您的 if 块的哪一部分实际上正在执行。

标签: php mysql sql-delete


【解决方案1】:

以下代码用于outbox.php,因为这是您粘贴的内容。

首先,将您的复选框更改为:

<input type='checkbox' name='cb$msg_id' value='$msg_id'>

类似于:

<input type='checkbox' name='outbox_ids[]' value='$msg_id'>

elseif 对应于 outbox 将是:

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
        {
          if(isset($_POST['outbox_ids']){
            $outbox_msg_ids = array_map('mysql_real_escape_string', $_POST['outbox_ids']);
            //all the checked msg id are now stored in $outbox_msg_ids,
            //we will loop through the values and pass it to the update query
            foreach($outbox_msg_ids as $msg_id){
              mysql_query("UPDATE messages SET from_delete='1' WHERE to_user='$user' AND id='$msg_id'");
            }
            echo "The selected messages have been deleted.";
          } //isset if block ends
        }
    }

注意:

Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDOMySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial

【讨论】:

  • 将其用于收件箱:pastebin.com/xpYdVZcA 我收到这些错误:gyazo.com/461b70a4700a5b5c3ce579fe29bda4a8.png 有什么想法吗??/
  • @user3474238 你是不是把inbox.php的input的名字改了?
  • 是的:
  • @user3474238 你能在array_map() 语句之前做一个print_r($_POST['inbox_ids']); 看看它是否输出任何东西吗?
  • 什么都没有。我将该代码放在数组映射行之前,但没有区别。
猜你喜欢
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 2012-03-12
  • 1970-01-01
相关资源
最近更新 更多