не работает запрос удаление устаревших записей из базы!

Vlad_c

Guest
не работает запрос удаление устаревших записей из базы!

не работает запрос!
mysql_query("DELETE FROM addresume WHERE DATE_ADD(cur_data,interval ".$I1." day)<=curdate()");

должен удалять записи которые занесены скажем на 7 или21 14 30 дней берем cur_data(дата когда занесли запись) interval ".$I1." day( дней на сколько добалена запись 7,14,21,30) сравнили с текущей датой?
Почему то записе удаляются спустя 7 дней т.е. мы добавили на 30 а он отсчитал 7 и удалил эту запись, хотя ей еще 23 дня висеть?

-~{}~ 24.02.04 12:24:

cur_data 2004-02-16 поле типа дата $I1-int я так понимаю прибавили 30 то получили 2004-03-17 именно в этот день должна удалиться запись, может curdate другой формат и оно не может сравниться?
 

Demiurg

Guest
как определяется на сколько дней была внесена запись ?
 

Кром

Новичок
>именно в этот день должна удалиться запись

Если бы ты ставил = так бы и было, но ты ставишь <= .
Почуствуй разницу. :)
 

Vlad_c

Guest
как определяется на сколько дней была внесена запись ?
>> когда заносим запись юзер выбирает сколько дней будет висеть его объява 7,14,21,30

-~{}~ 24.02.04 12:40:

т.е. то ($I1) что мы потом прибавляем к cur_data
 

Кром

Новичок
Ну и в чем проблема? Выведи свой запрос перед тек как его выполнить и посмотри, какое там число на самом деле 7 или 30.
 

Vlad_c

Guest
Кром - я выводил все данные до запроса и все ок подставляется именно то число которое нужно, а как вывести сам запрос можно вывести данные которые мы выбираем а сам запрос как?
 

Demiurg

Guest
>когда заносим запись юзер выбирает сколько дней будет висеть его объява 7,14,21,30
это хорошо, а куда потом это число попадает ?
 

Vlad_c

Guest
вот полный запрос

$query = ("SELECT * FROM addresume");

$r5 = MYSQL_QUERY($query);
for($i=0; $i<mysql_num_rows($r5); $i++)
{
$f6=mysql_fetch_array($r5);
$I1=$f6['time'];
mysql_query("DELETE FROM addresume WHERE DATE_ADD(cur_data,interval ".$I1." day)<=curdate()");

}
может не правильно выбираю число для подстановки?
хотя в цикле перебираю каждую запись а потом удаляю если устарела
 

Кром

Новичок
Напиши так:
PHP:
$SQL = "DELETE FROM addresume WHERE DATE_ADD(cur_data,interval ".$I1." day)<=curdate()";
echo $SQL;
mysql_query($SQL);
 

Demiurg

Guest
все понятно ...
DELETE FROM addresume WHERE DATE_ADD(cur_data,interval ".$I1." day)<=curdate()
удаляет ВСЕ записи, которые старше $I1.
ты проходишь в цикле и поочередно выполняешь эту операцию для всех записей. Теперь понятно, почему остаются только записи на семь дней.

ТО, что ты делаешь можно сделать 1 запросом.
DELETE FROM addresume WHERE DATE_ADD(cur_data,interval `time` day)<=curdate()
 

Vlad_c

Guest
Demiurg большое спасибо это заработало DELETE FROM addresume WHERE DATE_ADD(cur_data,interval `time` day)<=curdate()!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
Сверху