Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: доска объявлений(срок размещения)
 
 автор: dirol   (20.08.2007 в 11:55)   письмо автору
 
 

Подскажите, пожалуйста, делаю доску объявлений, как лучше сделать жизнь объявлений (срок размещения)
Если в базу, к примеру, записывается срок 100 дней как каждый день отчитывать по 1 дню? вообще кто делал, как правильнее сделать. Спасибо

   
 
 автор: arthur   (20.08.2007 в 12:20)   письмо автору
 
   для: dirol   (20.08.2007 в 11:55)
 

Сохраняешь сегодняшнее число в серверном формате time();

Считываешь с базы сохраненую дату скажем в переменую $saved_time;

Когда $time_passed=time()- $saved_time;
будет равняться 100 тогда соответственно в базе данных записываешь
в выделенную для этого колонку о дальнейшей недейсивительности этого рядя
или удаляешь его.

   
 
 автор: mehelson   (20.08.2007 в 12:20)   письмо автору
 
   для: dirol   (20.08.2007 в 11:55)
 

Можно в начало скрипта, ответственного за добавление новой записи ( к примеру ),
добавить запрос к базе на удаление или сокрытие всех записей,
срок давности которых истек, сравнивая текущую дату с датой записи доски объявлений, минус интервал в 100 дней.

   
 
 автор: dirol   (20.08.2007 в 17:55)   письмо автору
 
   для: mehelson   (20.08.2007 в 12:20)
 

Сделал по примеру

Записываю в базу данных объявление с серверным временем time()
Считываю и дальше
$time_passed=time()- $saved_time
И честно чета не врубаюсь как дальше.

Например
if($time_passed=time()- $saved_time){
echo "работает\n";
}

Записали объявление выбрали, к примеру, 5 дней
if($time_passed=time()- $saved_time){
echo "работает";
}

Подскажите, пожалуйста

   
 
 автор: provodnik   (21.08.2007 в 11:11)   письмо автору
 
   для: dirol   (20.08.2007 в 17:55)
 

У меня сделано следующим образом:

Для каждой записи вношу в БД время добавления (поле типа time) и дату удаления (поле типа ENUM, со значениями равными дням хранения: 7, 14, 30, 180, 365).

Далее в начале скрипта проверяю на "просроченность":

<?
$a 
mysql_query ("SELECT * from board WHERE UNIX_TIMESTAMP() >= `дата_удаления` * 86400+`дата добавления`");
while(
$qwe mysql_fetch_array($a))
{    
    
$t time (); // время настоящее
    
$ud = ($qwe['дата_удаления'] * 86400 $qwe['time']); // время удаления
    
if ($t $ud
    {
        
$del mysql_query ("DELETE FROM `board` WHERE id = ".$qwe['id']." LIMIT 1");
    }
}
?>

...

   
 
 автор: mehelson   (21.08.2007 в 11:45)   письмо автору
 
   для: provodnik   (21.08.2007 в 11:11)
 

Может проще будет,

Имея в таблице поле, допустим puttime, с временем добавления записи в формате DATETIME, можно
удалить устаревшие записи с помощью запроса :

<?php
$query 
"DELETE FROM table WHERE puttime < NOW() - INTERVAL '1' MONTH";
?>

интервал может быть разным... DAY, WEEK, YEAR

   
 
 автор: dirol   (21.08.2007 в 14:29)   письмо автору
 
   для: mehelson   (21.08.2007 в 11:45)
 

provodnik
mehelson
Спасибо вам большое!!!!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования