Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PMs-从发件箱PHP/MYSQL删除消息_Php_Mysql - Fatal编程技术网

PMs-从发件箱PHP/MYSQL删除消息

PMs-从发件箱PHP/MYSQL删除消息,php,mysql,Php,Mysql,我正在尝试创建一个基本的PM系统。我想让它发送/接收消息。我还想通过创建收件箱/发件箱来记录这些邮件。在收件箱中,我希望能够删除/回复邮件,而在发件箱中,我只希望删除邮件 我在从发件箱删除邮件时遇到问题。当按DELETE按钮删除消息1时,会删除最新的发件箱条目。例如,如果我有消息1、消息2、消息3,并且我按下消息1上的删除按钮,则将删除消息3 奇怪的是,完全相同的收件箱代码工作得很好,甚至可以响应 messages表由以下列组成: 1) 消息id(主INT) 2) 寄件人 3) 接受者 4) 信

我正在尝试创建一个基本的PM系统。我想让它发送/接收消息。我还想通过创建收件箱/发件箱来记录这些邮件。在收件箱中,我希望能够删除/回复邮件,而在发件箱中,我只希望删除邮件

我在从发件箱删除邮件时遇到问题。当按DELETE按钮删除消息1时,会删除最新的发件箱条目。例如,如果我有消息1、消息2、消息3,并且我按下消息1上的删除按钮,则将删除消息3

奇怪的是,完全相同的收件箱代码工作得很好,甚至可以响应

messages表由以下列组成: 1) 消息id(主INT) 2) 寄件人 3) 接受者 4) 信息 5) 已发送\已删除(默认值=否) 6) 已接收\u已删除(默认值=否) 7) 发送日期

以下是发件箱的代码:

<html>
<body>

<?php

//calling the variable using $_SESSION[]
session_start();
$sender = $_SESSION['USER'];
echo $sender;


//opening connection with database
require('C:\wamp\www\TEST\connect_db.php');

//to delete outbox message
if(isset($_POST['DELETE_MSG']))
{


$id = $_POST['DELETE_ID']; 


$query="UPDATE messages SET sent_deleted='YES' WHERE sender='$sender' AND     message_id='$id' ";
$results = mysqli_query($dbc,$query);

if(false ===$results)
{
    echo mysqli_error($dbc);
}

echo "Message succesfully deleted from your outbox<p>";
echo '<br>|<a href="main_page.php">HOME</a>|';

exit();


不会关闭表单,浏览器/用户代理会尝试处理,并将所有提交和隐藏的输入设置为一个大表单,使最后一个
DELETE\u ID
成为
$\u POST['DELETE\u ID']
。故事的寓意是:验证HTML,这比您认为的更重要:)。

可能您关闭的表单标记不正确,因此它将整个页面视为一个表单。您是否进行过任何调试?在您的代码路径中,您期望的消息id值与您实际得到的值在哪里不同?我一完成这个问题,就发现了这个问题!这就是错误所在。更正-->修复了该问题。谢谢@bumperbox:升级到一个答案,这样我就可以删除我的;)啊,在我给出答案之前,我看到评论出现了。。。啊,好吧,如果@bumperbox将他的评论升级为一个答案,我将删除这个;)
//searching for all messages that you have send a.k.a outbox and you havent deleted yet
$query = "SELECT * FROM messages WHERE sender='$sender' AND sent_deleted='NO' ";
$results = mysqli_query($dbc,$query);


if(false ===$results)
    {
        echo mysqli_error($dbc);
    }

$num = mysqli_num_rows($results);


$i=1; //initialize counter for outbox messages
$unread_outbox_id = array(); 


echo '<h1>OUTBOX</h1><br>'; 
if($num === 0) //check if the user has no outbox messages
{
echo "No OUTBOX messages!<br>";
echo '<br>|<a href="main_page.php">HOME</a>|';
exit();

}
else
{
while($row = mysqli_fetch_array($results,MYSQLI_BOTH))
    {

        $unread_outbox_id[$i][$row['message_id']] = $row['message_id'];


        echo "<p><font color='blue'><u><b>MESSAGE $i</b></u></font><br>";
        echo '<p><b><u>To</u></b>:' .$row['sender'].'<br>';
        echo '<b><u>From:</u></b>' .$row['receiver'].'<br>';
        echo '<b><u>Message:</u></b><br>' .$row['message'].'<br>';
        echo '<b><u>Date Received</u></b><br>' .$row['send_date'].'<br>';
    ?>


<form action="outbox.php" method="POST">
<input type="hidden" name="DELETE_ID" value="<?php echo $unread_outbox_id[$i]   [$row['message_id']]; ?>">
<input type="submit" name="DELETE_MSG" value="Delete message <?php echo $i; ?>">
</fomr>


<?php


    $i++;                           

    }


}


?>


</body>


<br>|<a href="main_page.php">Home</a>|

</html>