Лента новостей на php (нужна помощь !)

Рейтинг: 1Ответов: 1Опубликовано: 14.04.2015
// Выбор id залогиненного пользователя (по id буду сортироваться сообщения в ленты новостей от пользоватей на которых он подписан )

$sqlForSubscriberByLogged = "SELECT id_request_reciver FROM subscribers WHERE id_request_sender='$loggedUser->id' ";
$queryForSubscriberByLogged = $database->query($sqlForSubscriberByLogged);
$fetch_arrayForSubscriberByLogged = $database->fetch_array($queryForSubscriberByLogged);

// Здесь сортировка для ленты новостей от нужных пользователей на которых подписан залогившейся юзер.
// Фильтрация данных будет идти от id_request_reciver

$sqlForWallMessagesBySubscribers = "SELECT id_mes,id,text,sender,minute,hour,day,month,year FROM wall_messages WHERE
                                   id='$fetch_arrayForSubscriberByLogged[id_request_reciver]' ORDER BY id_mes DESC LIMIT 15";
$queryForWallMessagesBySubscribers = $database->query($sqlForWallMessagesBySubscribers);

Нужна помощь правильно "отфильтровать" вывод данных для ленты новостей. То есть, я выбираю из базы данных те поля где мой id подписан на других пользователей с их id. Проблема в том ЧТО мне даёт только id ПОСЛЕДНЕГО ЮЗЕРА на которого я подписался, а не выдаёт всех (то есть не все поля, а только одно), в цикле ниже просто идёт фильтрация по сообщениях. введите описание изображения здесь

Вот как получаеться. А мне нужно что-то типа этого... введите описание изображения здесь

Заранее благодарю за помощь...

Ответы

▲ 1

Добрый день. Во-первых, как пожелание хотел бы сказать, укоротите эти длинные названия переменных. Это ни к чему, еще так можно писать в прикладном программировании, где вы к стандартному заголовку компонента дописываете свое что-то, но тут у вас просто php, так что поменяйте это).

Второе. Глядя на ваш код:

$sqlForSubscriberByLogged = "SELECT id_request_reciver FROM subscribers WHERE id_request_sender='$loggedUser->id' ";
$queryForSubscriberByLogged = $database->query($sqlForSubscriberByLogged);
$fetch_arrayForSubscriberByLogged = $database->fetch_array($queryForSubscriberByLogged);

// Здесь сортировка для ленты новостей от нужных пользователей на которых подписан залогившейся юзер.
// Фильтрация данных будет идти от id_request_reciver

$sqlForWallMessagesBySubscribers = "SELECT id_mes,id,text,sender,minute,hour,day,month,year FROM wall_messages WHERE
                                   id='$fetch_arrayForSubscriberByLogged[id_request_reciver]' ORDER BY id_mes DESC LIMIT 15";
$queryForWallMessagesBySubscribers = $database->query($sqlForWallMessagesBySubscribers);

Вы удивляетесь почему у вас указаны комментарии только одного пользователя? В первом запросе у вас стоит отбор записей, если они удовлетворяют условию такому id_request_sender='$loggedUser->id, то есть пользователя которого указали, тот и потом фетчем передается во второй запрос. Можно было бы это объединить в один запрос просто, чуть более сложный, но за то удобный и понятный. Если у вас с этим трудности, то почитайте про то, как объединять данные с нескольких таблиц, в частности конструкции WHERE, JOIN (LEFT, RIGHT, INNER), тогда все станет понятно). Удачи в работе!