Задать вопрос
@Zhandev

Как правильно создать sql запрос, php скрипт для подняния постов вверх по списку?

Всем доброго времени суток!
Есть такая задача:
Требуется написать скрипт на php для поднятия вверх по списку определенных постов/записей через определенное кол-во времени(каждые 4 часа).
Каждые четыре часа будет вызываться php скрипт с помощью cron.
Скрипт должен поднимать вверх те посты, у которых поле "auto_up" равен "true".
  • Вопрос задан
  • 374 просмотра
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
Держите в БД три поля: auto_up, created, effective – последние два при создании одинаковы – датавремя создания поста.

Каждые 5 минут сравнивайте текущее время с effective у записей, где auto_up=1 – и если разница больше 4 часов, вычитайте 4 часа из effective.

При показе объявлений сортируйте не по created, а по effective.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@res2001
Developer, ex-admin
Может быть и не нужно никаких скриптов? Наверняка посты сортируются по времени создания, допусти это поле create_time в базе, тогда просто добавьте в order by поле auto_up:
...
order by auto_up, create_time desc

Правда это будет больше похоже на заморозку постов, а не на поднятие.
По какому принципу будете отменять поднятие постов? Если не отменять скоро у вас все первые страницы займут поднятые посты.
Если вариант выше не подходит, добавьте поле up_time, со значением по умолчанию равным create_time. В скрипте поднятия выставляйте это поле в текущее дату/время, а при отборе постов, точно так же, как и в примере выше, добавьте это поле в список order by.
Ответ написан
Комментировать
@nozzy
Symfony, Laravel, SQL, Python, Telegram
update your_table
set level = 2;

update your_table
set level = 1,
set auto_up = false
where auto_up = true;

select * from your_table
order by level, date_created;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы