Я создаю веб-сайт, на котором есть функция обмена сообщениями, эта функция должна работать так же, как и любая обычная система обмена сообщениями. Если щелкнуть ссылку / кнопку msg, она покажет нам список людей (еще не говорящих), с которыми мы общаемся, прежде чем войти в личное сообщение (беседу) от / к этому конкретному человеку, моя проблема в том, что я получаю дубликата друга ( имя пользователя другого человека), когда мы оба отправляем, поскольку у меня есть два столбца для имени пользователя (человек, который вошел в систему) и друга (с которым я отправил сообщение).
Я считаю, что моя проблема - это проблема логики, а не кода, но я могу ошибаться. Я пытался использовать разные виды логики, но не смог получить то, что хочу. Я также считаю, что если я задаю правильное условие во втором цикле «если» внутри цикла while, это может сработать. Проверьте мою таблицу и код ниже:
Table chats:
username(fk) friend chats
a b Hi b
b a Hi a
И мой код PHP и SQL:
$username = $_SESSION['username'];
$sql = "SELECT DISTINCT username, friend FROM chats WHERE username = '$username' OR friend = '$username'";
$result = $conn->query($sql);
if($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
if($username == $row['friend'])
{
echo "<a href = 'chat.php?usernames=".$row['username']."'>".$row['username']."</a>";
}
if($username == $row['username'])
{
echo "<a href = 'chat.php?usernames=".$row['friend']."'>".$row['friend']."</a>";
}
}
}
В приведенном выше коде, скажем, я 'a', что я получаю: два раза 'b', вместо одного, поэтому есть два 'b', но я хочу только один 'b'. Предположим, что второй записи нет, тогда я получу только один «b», но как только я получу ответ от «b», он отобразит 2 «b», то есть, как только появятся две записи «a» и «b», как в Таблица выше, 2 «б» будет отображаться. Стоит также отметить, что, поскольку я проверяю из 2 разных столбцов, DISTINCT в запросе не будет работать (я мог бы решить проблему, если вместо 2 использовался только 1 столбец, используя разные). Пожалуйста, проверьте проблему на изображении ниже , Спасибо за вашу помощь.