Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Удаление записей из таблицы по заданному времени на php (http://forum.oszone.net/showthread.php?t=147887)

magwolf 13-08-2009 15:21 1192799

Удаление записей из таблицы по заданному времени на php
 
Ребят подскажите чайнику как реализовать на php+ mysql удаление записей из таблицы по заданному времени.

Например: есть группа статьей половину из которых выли сознаны пол года назад, необходимо создать скрипит который удалял стати который больше чем 30 дней


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

dmitryst 13-08-2009 15:26 1192805

если есть доступ к crontab-у, то лучше оттуда (написать скрипт, удаляющий нужные таблицы, и в крон вписать его с указанием времени выполнения, скажем, каждый день в час ночи)

Coutty 13-08-2009 16:37 1192858

dmitryst, а нужно ли? Ведь требуется только 1 раз удалить записи.

magwolf,
Ключевым будет sql-запрос типа такого:
Код:

DELETE * FROM table_name WHERE st_date < '13.07.2009'
Разумеется, надо оформить соответствующим образом php-кодом. Писали ведь скрипты? Если нет, то читайте руководство php) Примерно так будет:
PHP код:

<?php
mysql_connect
(...);
mysql_select_db(...);
mysql_query("DELETE * FROM table_name WHERE st_date < '13.07.2009'") or die("Ничего не вышло");
echo 
"Всё вышло";
?>

Вместо многоточий подставьте параметры соединения.
В результате будет или "всё", или "ничего" (если ошибки какие в запросе :)).

Под st_date подразумевается имя поля, где хранится дата статьи. Соответственно, формат даты нужно использовать тот, который в БД записан. Бывает, что дату хранят в трёх полях (день, месяц, год), но это маловероятно.

Если есть какой-нибудь phpMyAdmin на сервере, то можете прямо в нём выполнить запрос (для начала всё то же самое попробуйте, но вместо DELETE напишите SELECT. Если выдаст именно те статьи, которые надо удалять, то пишите DELETE вторым запросом).

dmitryst 13-08-2009 17:21 1192891

Цитата:

Цитата Coutty
Ведь требуется только 1 раз удалить записи. »

я так понял, что надо удалять регулярно. Ничего, автор топика уточнит :)
Кстати, mysql не имеет встроенного средства для уточнения даты последней модификации таблицы? Из MySQLAdministrator-а видно, наверняка оно где-то хранится (или используется просто дата модификации соответствующего файла .FRM?). А то можно было бы получить списочек... (по типу SHOW VARIABLES LIKE...)

magwolf 14-08-2009 08:32 1193311

Записи необходимо чтоб удалялись автоматически. например: прошел месяц или срок установленный заранее и скрипит, удалил все записи срок которых больше 30 дней или срок который укажет админ.

dmitryst 14-08-2009 14:13 1193542

magwolf, значит, всё-таки cron :)


Время: 07:44.

Время: 07:44.
© OSzone.net 2001-