У меня есть базовый чат php. В каждой «комнате» есть свой стол. в каждой таблице комнаты публикуются отдельные сообщения, по одной строке на одно сообщение. столбцы следующие:
id, sender, message
в отдельной таблице, называемой ignore_lists, у пользователей есть команда в чате, чтобы добавить пользователей в свой список игнорирования для личных сообщений. Который отлично работает, у меня эта часть полностью работает.
Но сегодня я решил, что хочу попытаться сделать так, чтобы они не видели сообщения в общедоступном чате «главного экрана» для людей, которых они занесли в свои списки игнорирования.
Я пытался и пытался, но не могу заставить его работать, не делая всевозможных забавных вещей.
Вот функция, которая отображает мои сообщения в чате:
function showroom($room, $len, $link){
$query3 = "SELECT * FROM(SELECT `message`, `id`, `sender` FROM `$room` ORDER BY `id` DESC LIMIT $len) AS `id` ORDER BY `id` ASC";
$result3 = mysqli_query($link, $query3); // execute the query
if (mysqli_num_rows($result3) > 0) {
while($row = mysqli_fetch_assoc($result3)) {
$showmsg = htmlspecialchars_decode($row["message"]);
echo "$showmsg<br>";
}}}
Как я могу использовать таблицу списка игнорирования, чтобы каким-то образом получать сообщения из указанной выше функции, но исключать любое количество людей, которые появляются в списке игнорирования?
для дальнейшего справки... таблица списка игнорирования просто представляет собой одну большую таблицу для всех пользователей. каждый раз, когда пользователь добавляет кого-то в свой список игнорирования, он вставляет строку в таблицу ignore_list со столбцами:id, person_being_ignored, name_of_ignore_list_owner
Я сделал такое заявление, но оно не сработало. Вернее, я должен сказать, что это работает, но работает, только если у вас есть ровно один человек в списке игнорирования.
query = "SELECT * FROM `ignore_lists` WHERE `ignore_owner`='$id' ORDER BY `person_being_ignored` ASC";
$result = mysqli_query($link, $query); // execute the query
if (mysqli_num_rows($result) > 0) {
while($mrow = mysqli_fetch_array($result)) {
$ignoree_name = $mrow['name_of_ignored'];
$query3 = "SELECT * FROM `$room` WHERE sender <> '$ignoree_name'";
// $query3 = "SELECT * FROM(SELECT `message`, `id`, `timestamp`, `color` FROM `$room` WHERE sender <> '$ignoree_name' ORDER BY `id` DESC LIMIT $len) AS `id` ORDER BY `id` ASC";
$result3 = mysqli_query($link, $query3); // execute the query
}
while($row = mysqli_fetch_array($result3)) {
$showmsg = htmlspecialchars_decode($row["message"]);
echo "$showmsg<br>";
}
} elseif(mysqli_num_rows($result) < 1) {
$query3 = "SELECT * FROM(SELECT `message`, `id`, `timestamp`, `color` FROM `$room` ORDER BY `id` DESC LIMIT $len) AS `id` ORDER BY `id` ASC";
$result3 = mysqli_query($link, $query3); // execute the query
if (mysqli_num_rows($result3) > 0) {
while($row = mysqli_fetch_assoc($result3)) {
$showmsg = htmlspecialchars_decode($row["message"]);
echo "$showmsg<br>";
}}}}