Jump to content
  • 0

Автоудаление записей


Neolink
 Share

Question

Доброго времени суток,

столкнулся со следуюей проблеммой.

В php не очень рублю, написал скрипт по внесению пользователсями информации через формы в таблицу БД, и соответственно вывода; что-то вроде специализированной доски объявлений. И соответственно сама проблемма: как и во всех нормальных объявлениях мне необходимо что бы через какое-то определенное время (которое в ту же форму вводят сами пользователи) объявление самоудалялось. Внимание вопрос. Как это можно реализовать при помощи php. Помогите кто чем может. Спасибо.

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

есть тупой вариант. у объявления есть дата. при заходе любого пользователя дописать строчку - принудительно удалить из базы все записи время жизни которых уже больше Х.... только чуть подгружает сайт. а так крон тебе в помощь.. но это ужо не php

Link to comment
Share on other sites

  • 0

Можно чуть поподробнее где найти эту дату или какая у не? функция или вообще что. Собственно в это и уперлось все, например если я в таблицу добавлю еще поля для дат как их туда помещать? Каким образом их вставлять? Немного не понятно за выражение "у любого объявленияесть дата", где?

Link to comment
Share on other sites

  • 0

дата когда пользователь отправил запрос. тут ведь даже не надо ее конвертировать в привычные год, месяц, число - скриптом при сохранении записи берем time() - текущее UNIX-время - и сохраняем в...где-нибудь. а при выводе объявлений, когда кто-то смотрит, перед самим выводом снова берем time(). дальше сравниваем, насколько сохраненное время меньше текущего (арифметика блин, действие называется вычитание:) и ставим проверку:

если ( (ТЕКУЩЕЕ_ВРЕМЯ минус СОХРАНЕННОЕ_ВРЕМЯ) больше или равно (ДНЕЙ_ЖИЗНИ умножить 24 умножить 60 умножить 60) ) удалить запись из базы

Link to comment
Share on other sites

  • 0

идешь на php.ru .. там открываешь документацию. раздел дата и время. потом читаешь ппро тип данных date в mysql.

Извини, но если я это сделаю за тебя пользу тебе никакой... просто тупо помощь. надеюсь хоть с таким простым намеком разберешься

Link to comment
Share on other sites

  • 0

Все очень и очень просто - не изобретайте велосипед

1 - Шаг первый ты создаешь таблицу в бд где ставишь одно поле как NOW() - это пометка когда было добавлено сообщение (колонка должна иметь тип DATE)

2 - Теперь делаешь скрипт в котором устанавливаешь время через которое тебе нужно удалить запись из таблицы:

<?php
//Создаем переменную через какой интервал будет удалятся запись
$days =1; // 1 - это один день , 2 - два , и т. д
//Выбираем записи котрые мы удаляем (сейчас это которым по времени больше чем один день)
$query = "DELETE FROM your_table WHERE
( TO_DAYS(NOW()) - TO_DAYS(твоя колонка (DATE)) ) > $days;";
mysql_query($query);
//Finish ты всех стер
//Для изменения времени самоудаления просто меняй параметр $days
?>

P.S. если хочешь развиваться в данной области не забывай почитывать функции MYSQL.

Удачи!

Link to comment
Share on other sites

  • 0

В догонку по теме:

Со скриптом для удаления - это все ясно,

а как сделать чтобы этот (или какой -либо другой служебный скрипт) периодически запускался в какое-нибудь определенное время ?

Link to comment
Share on other sites

  • 0
Самое идеальное - cron. Способ для "бедных" - настроить планировщик таким образом, чтобы он запускал по расписанию браузер с адресом скрипта.

а что такое cron? - я пока что начинающий сайтоваятель :)

Link to comment
Share on other sites

  • 0
Vlad это дурной способ.

Sserg-135, лучше сделай модуль, который смотрел бы если другой день и еще не удалялись объявления то удалить, а сам модуль рекъюрь, выходя как ты писал сайт.

что значит "рекьюрь" модуль - это require ?

Link to comment
Share on other sites

  • 0
Vlad это дурной способ.

Sserg-135, лучше сделай модуль, который смотрел бы если другой день и еще не удалялись объявления то удалить, а сам модуль рекъюрь, выходя как ты писал сайт.

что значит "рекьюрь" модуль - это require ?

Лучше require_once

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy