Как вывести пользователей, которые ещё небыли просмотрены админом?

Статус
В этой теме нельзя размещать новые ответы.

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
416
Реакции
49
В БД MySQL на сайте есть таблица users.
При входе в админку сайта, админ переходит в раздел "Все пользователи" и ему выдается список анкет пользователей, разбитых постранично (по 10 профайлов на страницу), отсортированных по убыванию - DESC.
Хочу заранее описать ситуацию, когда суточных регистраций может стать очень много и понадобится функция просмотра новых пользователей, которых админ ещё не видел.

Догадываюсь, что в таблице users можно завести новое поле moderated (0,1) и помечать его единицей, когда юзер просмотрел пользователя (или пользователь "побывал" в выборке при посещении админом раздела "Все пользователи"). Только непонятно как лучше всего переписать SQL-запрос.

Вот например, при заходе в раздел "Все пользователи" срабатывает SQL следующего вида:
Код:
SELECT DISTINCT a.id, a.icon_path, e.userid AS session
          FROM users a
          LEFT JOIN sesstbl e on a.id=e.userid
          WHERE a.status='1' AND a.visible='1' AND a.guest_user='0' AND a.id != '".intval($user)."'
          ORDER BY a.date_topsearched DESC, a.date_registration DESC
          LIMIT 0, 10

Можно ли этот запрос модифицировать таким образом, чтобы для 10 результатов из выборки поле moderated таблицы users помечалось на 1?
Или как здесь лучше сделать?
 
Чем переписывать сложный запрос в update, в твоём случае будет проще в php (или другом языке, который используешь для сайта) пройтись циклом по ответу и выбрать id в массив, затем сделать update

PHP:
while(...){ //или foreach, если запрос уже в массиве
...
$for_update[] = $row['id'];
}
db_update("UPDATE `users` SET moderated = 1 WHERE id IN(" . implode(',', $for_update) .")");
 
1 запросом без прокладок ничего и не выйдет хорошего т.к. писать в ту же таблицу, откуда и берутся данные нельзя
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху