Закрытие публикации

Станислав
На сайте с 27.12.2009
Offline
237
486

Помогите решить задачу

В базе данных в таблице где хранится запись есть время создания этой записи, к дате создания автоматом прибавляется время, т.е. если я создаю запись 08.09.2011 23:59:59, то в базу данных время записывается как 10.09.2011 23:59:59

Плюсом записывается 2 дня.

Нужно как то сделать чтобы при достижении 10.09.2011 23:59:59 публикация убиралась со странице, для этого есть поле UP, если в этом поле стоит цифра 1 то новость выводится, если 0 то новость закрыта и она не появляется на сайте.

Я не пойму к чему привязаться. Уже весь мозг себе сломал, а заказчик требует :(

В общем нужно как то сделать чтобы при подходе даты 10.09.2011 23:59:59, поле UP перезаписывалось и вместо 1 ставилось автоматом 0.

Но как?

Предлагал кнопку сделать закрытия публикации, что только не предлагал, он не в какую, надо говорит так и не иначе. Не ужели под это дело крон придется писать? Или быть может есть какой то иной способ? Более легкий

Мы там, где рады нас видеть.
V
На сайте с 03.12.2007
Offline
94
#1
Ms-Dred:
если я создаю запись 08.09.2011 23:59:59, то в базу данных время записывается как 10.09.2011 23:59:59

если вам нужно, чтобы публикация не показывалась после 10.09.2011 23:59:59, то и привяжитесь к дате.

в sql запрос добавьте

"SELECT * FROM publication WHERE publication_date>NOW()"
- тоесть выводить записи, дата создания которых меньше текущей даты.

Но правильнее было бы не добавлять 2 дня при создании, а высчитывать все в запросе

SELECT * FROM publication WHERE NOW() < publication_date + INTERVAL 2 DAY
D
На сайте с 14.01.2007
Offline
153
#2

добавте в функцию вывода статей проверку на время. т.е. примерно так:

1. выбираем все статьи, помеченные единицей

2. проверяем время

2а. меньше 2 дней - показываем

2б. больше - update на 0 и не показываем

в след. раз эту статью уже проверять не надо

Станислав
На сайте с 27.12.2009
Offline
237
#3
vavenko:
если вам нужно, чтобы публикация не показывалась после 10.09.2011 23:59:59, то и привяжитесь к дате.
в sql запрос добавьте - тоесть выводить записи, дата создания которых меньше текущей даты.

Но правильнее было бы не добавлять 2 дня при создании, а высчитывать все в запросе

Первый раз про NOW() слышу, он с сложными выборками будет работать? Как он вобще работает?

Вот к примеру есть выборка из двух таблиц

SELECT * FROM T1,T2 WHERE T1.news1=T2.id or T1.news2=T2.id ORDER BY T1.id DESC LIMIT ".$class."

И как его обработать? В смысле что куда. Дату смогу добавить в sql, скажем к примеру $date = 10.09.2011 23:59:59

Вобще интересно очень, так как с этим еще не сталкивался.

Dinozavr, да, я хотел что то вроде этого сделать, но тут проблем в чем, нужно же запустить проверку или привязаться к чему то, т.е. функция то сама не будет проверку делать, нужно ее как то запустить

V
На сайте с 03.12.2007
Offline
94
#4
Ms-Dred:
NOW()

встроенная функция mysql. Почитайте про функции даты и времени

работать будет в любых запросах. вставлять в условие WHERE например:

SELECT * FROM T1,T2 WHERE (T1.news1=T2.id or T1.news2=T2.id) AND T1.news_date>NOW() ORDER BY T1.id DESC LIMIT ".$class."
Станислав
На сайте с 27.12.2009
Offline
237
#5

vavenko, ясно, спасибо, нужно будет подумать что лучше и как лучше сделать. С запросом думаю разберусь.

Вот еще что надумал, но что то не рабит

перед тем как вывести прибиваем новость таким вот образом

$sql="UPDATE  `T1`  set `yes`='0'  WHERE `time` <".(time() - 48*60*60);

@mysql_query($sql);

Но что то у меня обновляет все записи, даже те которые созданы недавно.

Нужно мне все переварить, а то уже соображалка не соображает совсем 🤪

V
На сайте с 03.12.2007
Offline
94
#6

какой формат поля `time` в таблице?

Станислав
На сайте с 27.12.2009
Offline
237
#7
vavenko:
какой формат поля `time` в таблице?

Все решил, все оказалось намного проще чем я думал, направили в нужную сторону

Вот реализация к примеру

$sql="UPDATE  `T1`  set `yes`='0'  WHERE `time` < '2011-09-10 08:06:14'";

Осталось дело за малым =)

Еще раз спасибо

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий