我正在尝试为我的网站的私人消息传递部分整理删除功能,基本上它删除了消息很好,但我现在试图让它不仅删除消息,而且所有其他回复消息连接到它,通过while循环,每个单独的消息都有一个唯一的message_id,但是每个消息的“对话”,例如涉及回复的地方,都有一个message_unique,它是每个通过彼此连接的消息的相同id。 / p>
下面是删除代码,它需要做的就是将变量设置为答复来自收件人的变量,或者如果它构成发件人,则将删除变量设置为1,希望你应该得到我的意思,目前它将sender_deleted和recipient_deleted都设置为1,它不应该
if (isset($_POST['delete_inbox'])) {
foreach($_POST['inbox_select_box'] as $message_unique) //loop through the checkboxes
{
$query = mysql_query("SELECT * FROM messages WHERE message_unique = $message_unique");
while($row = mysql_fetch_assoc($query)){
extract($row);
if ($recipient_id == $user_id){
$sql = "UPDATE messages SET recipient_deleted = '1' WHERE message_unique = '$message_unique'";
$result=mysql_query($sql);
}
else{
$sql = "UPDATE messages SET sender_deleted = '1' WHERE message_unique = '$message_unique'";
$result=mysql_query($sql);
}
}
}
$ user_id是登录用户的id的全局变量,感谢你们给我的任何帮助
答案 0 :(得分:1)
我假设您的主键被称为message_id
。
试试这样:
if (isset($_POST['delete_inbox'])) {
foreach($_POST['inbox_select_box'] as $message_unique) //loop through the checkboxes
{
$query = mysql_query("SELECT * FROM messages WHERE message_unique = $message_unique");
while($row = mysql_fetch_assoc($query)){
extract($row);
$message_id = $row['message_id'];
if ($recipient_id == $user_id){
$sql = "UPDATE messages SET recipient_deleted = '1' WHERE message_id = '$message_id'";
}
else
{
$sql = "UPDATE messages SET sender_deleted = '1' WHERE message_id = '$message_id'";
}
$result = mysql_query($sql);
}
}
}
问题是,您每次都在线程中的每条消息上设置值。您需要使用每行的消息的实际ID执行更新。
作为旁注:如果您只是设置要在mysql_query()
中使用的SQL字符串,则应该只在if () ... else ...
语句之外执行一次方法调用。