Показать полную графическую версию : Удаление записей из таблицы по заданному времени на php
Ребят подскажите чайнику как реализовать на php+ mysql удаление записей из таблицы по заданному времени.
Например: есть группа статьей половину из которых выли сознаны пол года назад, необходимо создать скрипит который удалял стати который больше чем 30 дней
Заранее благодарю за помощь!!!!
dmitryst
13-08-2009, 15:26
если есть доступ к crontab-у, то лучше оттуда (написать скрипт, удаляющий нужные таблицы, и в крон вписать его с указанием времени выполнения, скажем, каждый день в час ночи)
dmitryst, а нужно ли? Ведь требуется только 1 раз удалить записи.
magwolf,
Ключевым будет sql-запрос типа такого:
DELETE * FROM table_name WHERE st_date < '13.07.2009'
Разумеется, надо оформить соответствующим образом 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
Ведь требуется только 1 раз удалить записи. »
я так понял, что надо удалять регулярно. Ничего, автор топика уточнит :)
Кстати, mysql не имеет встроенного средства для уточнения даты последней модификации таблицы? Из MySQLAdministrator-а видно, наверняка оно где-то хранится (или используется просто дата модификации соответствующего файла .FRM?). А то можно было бы получить списочек... (по типу SHOW VARIABLES LIKE...)
Записи необходимо чтоб удалялись автоматически. например: прошел месяц или срок установленный заранее и скрипит, удалил все записи срок которых больше 30 дней или срок который укажет админ.
dmitryst
14-08-2009, 14:13
magwolf, значит, всё-таки cron :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.