заявление и условие логики удаления чата

0

У меня есть проект, который использует приложение чата. Я уже прочитал здесь ответ о том, как удалить сообщение от пользователя, но он не будет удален от другого пользователя. Тем не менее, я застрял в этом. Я могу удалить его, не используя удаление строки, но только обновление idSender (idPengirim). Поле idReceiver (idPenerima) по-прежнему остается. Кроме того, он всегда удаляется от обоих пользователей. Здесь это метод:

public function deleteChat($pengirim,$penerima,$idChat){

    $query = $this->conn->prepare("SELECT * FROM mess WHERE idChat=:idchat");
    $query->execute(array(":idchat" => $idChat));

    while($row=$query->fetch(PDO::FETCH_ASSOC)){
        $row['idPengirim'] = $pengirim;
        $row['idPenerima'] = $penerima;
        if($pengirim == -1 && $penerima == -1){
            $query = $this->conn->prepare("DELETE FROM mess WHERE idChat = :idchat");
            $query->execute(array(":idchat"=>$idChat));


        }
        if ($pengirim!=-1){
            $query = $this->conn->prepare("UPDATE mess SET idPengirim = -1");
            $query->bindParam(":idchat",$idChat);
            $query->execute();

            return $query;
        }

        if ($penerima!=-1){
            $query = $this->conn->prepare("UPDATE mess SET idPenerima = -1");
            $query->bindParam(":idchat", $idChat);
            $query->execute();

            return $query;
        }

    }
}

Я понятия не имею, что мне делать. Надеюсь, я найду здесь гидов, спасибо. Извините за мой сломанный английский.

  • 0
    Почему вы устанавливаете $row['idPengirim'] = $pengirim; ? Вы ничего не делаете с этим. На самом деле вы вообще не читаете из массива $row , так почему у вас есть SELECT ? И в ваших UPDATE вы :idchat переменную :idchat , но не используете ее в своих запросах.
  • 0
    Я вижу, я забыл удалить часть привязки: idchat. И для $ row ['idPengirim'] = $ pengirim; Я установил его для использования на другой странице, то же самое с другими параметрами ($ penerima, $ idChat).
Показать ещё 2 комментария
Теги:

1 ответ

0

Я думаю, что правильный способ создания чат-приложения - построить таблицу, размещенную для chats и содержать userFromId и userToId. когда вы получаете чат, вы отправляете запрос get * from chat where userFromId=.. and userToId =..... и когда вы удаляете чат, вы делаете то же самое: delete * from chat where.. Я не знаю, как вы так как у вас нет проблем с "чатом, удаленным от одного пользователя и не удаленным из другого".

  • 0
    У меня есть таблицы, состоящие из id, idReceiver, idSender и idChat. Проблема в том, что когда я нажимаю кнопку удаления, idSender изменится на -1. Так было всегда, idReceiver вообще не менялся и, конечно, удаление работает, но оно работало для обоих пользователей, а не для одного из них (Отправитель и Получатель). Я просто запутался в этом, может быть, приведенное выше утверждение еще не соответствует? Есть идея?
  • 0
    зачем устанавливать userId равным -1, а не удалять эту строку из таблицы?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню