imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 24.06.2005, 09:56     # 1
Прохожий_
Newbie
 
Регистрация: 24.04.2005
Сообщения: 23

Прохожий_ Путь к славе только начался
Уловие когда линк доступен Х дней от для регистрации

Привет всем

У меня такое дело:
Все дело в sql
Имеется дата регистрации и когда заходишь в информацию имеется определенный линк, который должен заменяться на надпись ЛИНК НЕДОСТУПЕН после истечения 14 количества дней.

Так вот... Я в этом деле профан (пхп всмысле) и создание условий с манипуляцией датами для меня просто атас. Я не знаю каким образом можно прибавить 14 дней к дате, а потом сравнить с текущей датой.

Если сможете помочь, буду благодарен
Прохожий_ вне форума  
Старый 24.06.2005, 11:11     # 2
DeADMoroZ
::VIP::
 
Аватар для DeADMoroZ
 
Регистрация: 21.08.2004
Адрес: Тула
Сообщения: 351

DeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ Сэнсэй
Проще всего через timestamp
http://ru3.php.net/mktime
http://ru3.php.net/strtotime
RTFM -
DeADMoroZ вне форума  
Старый 24.06.2005, 14:16     # 3
Неизвестный
Guest
 
Сообщения: n/a

Прохожий_
В скрипте сравниваешь дату регистрации с текущей датой + 14 дней.
Код:
$sql = mysql_query("SELECT reg_date FROM table");
while($row = mysql_fetch_array($sql))
{
  $reg_date = $row['reg_date'];
  $expire_time = $reg_date + ((14 * 24) * 3600) // Это мы формируем дату истечения 14 дней. 14 дней умножаем на количество часов в дне и результат умножаем на количество секунд в часе.
  if(time() =< $expire_time) // Если текущее время, меньше или равно дате истечения
  {
     $result = mysql_query("UPDATE table SET link='0'");
  }
}
Далее, если линк равен нулю - выводишь "ЛИНК НЕДОСТУПЕН" иначе выводишь линк.
Если в базе дата регистрации хранится в виде d.m.Y H:i - необходимо сначала перевести её в секундный формат.
Возможно есть вариант проще с strtotime. Тут сказать не могу - не пользовался.
 
Старый 24.06.2005, 15:05     # 4
DeADMoroZ
::VIP::
 
Аватар для DeADMoroZ
 
Регистрация: 21.08.2004
Адрес: Тула
Сообщения: 351

DeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ Сэнсэй
Цитата:
Сообщение от Неизвестный
Прохожий_
В скрипте сравниваешь дату регистрации с текущей датой + 14 дней.
Код:
$sql = mysql_query("SELECT reg_date FROM table");
while($row = mysql_fetch_array($sql))
{
  $reg_date = $row['reg_date'];
  $expire_time = $reg_date + ((14 * 24) * 3600) // Это мы формируем дату истечения 14 дней. 14 дней умножаем на количество часов в дне и результат умножаем на количество секунд в часе.
  if(time() =< $expire_time) // Если текущее время, меньше или равно дате истечения
  {
     $result = mysql_query("UPDATE table SET link='0'");
  }
}
Далее, если линк равен нулю - выводишь "ЛИНК НЕДОСТУПЕН" иначе выводишь линк.
Если в базе дата регистрации хранится в виде d.m.Y H:i - необходимо сначала перевести её в секундный формат.
Возможно есть вариант проще с strtotime. Тут сказать не могу - не пользовался.
И скрипт этот в крон запихивать? геморрой, а тем более крона может и не быть..
Задача сводится к тому, чтобы при запросе на вывод линка проверять скрпитом, прошло ли со времени создания этого линка 14 дней.
Хотя крон все равно понадобится, чтобы очищать базу от старых, не активированных линков
DeADMoroZ вне форума  
Старый 25.06.2005, 11:40     # 5
Прохожий_
Newbie
 
Регистрация: 24.04.2005
Сообщения: 23

Прохожий_ Путь к славе только начался
PHP код:
$v_link="SELECT *
              FROM registration WHERE date_registered < NOW() - INTERVAL 14 DAY AND user_id='" 
$HTTP_GET_VARS['user_id'] . "";
              if (
mysql_fetch_row(mysql_query($v_link))) {
echo 
"14 days is not passed";
} else {
echo 
"14 days is passed";

конечно можно и через массив

Последний раз редактировалось Прохожий_; 25.06.2005 в 11:42.
Прохожий_ вне форума  
Старый 27.06.2005, 15:05     # 6
N!trO
Newbie
 
Регистрация: 27.04.2004
Сообщения: 17

N!trO презирают в этих краях
Думаю последний вариант самый приемлемый. Систему не загружает и весьма маленький...
N!trO вне форума  
Старый 28.06.2005, 20:18     # 7
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Прохожий_:
Я в этом деле профан (пхп всмысле) и создание условий с манипуляцией датами для меня просто атас. Я не знаю каким образом можно прибавить 14 дней к дате, а потом сравнить с текущей датой.
SELECT * from tablename where date > NOW() + INTERVAL 14 DAYS
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 29.06.2005, 12:22     # 8
Неизвестный
Guest
 
Сообщения: n/a

DeADMoroZ
Зачем крон, если можно проверять все в исполняющемся скрипте?
 
Старый 29.06.2005, 12:39     # 9
DeADMoroZ
::VIP::
 
Аватар для DeADMoroZ
 
Регистрация: 21.08.2004
Адрес: Тула
Сообщения: 351

DeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ Сэнсэй
Неизвестный
Чтобы при каждом открытии страницы проверять всю базу? а если у тебя несколько тысяч посещений, тогда несколько тысяч раз в день перелопачивать всю базу? Не катит imho
DeADMoroZ вне форума  
Старый 29.06.2005, 15:40     # 10
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
DeADMoroZ:
Чтобы при каждом открытии страницы проверять всю базу?
Почему всю базу??? Там же написано, заходишь на страницу и должен быть либо линк, либо надпись что он истек! Дак вот моим запросом просто его выбирать из базы и не нужно никаких скриптов, кронов и т.д.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 29.06.2005, 16:22     # 11
DeADMoroZ
::VIP::
 
Аватар для DeADMoroZ
 
Регистрация: 21.08.2004
Адрес: Тула
Сообщения: 351

DeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ Сэнсэй
Hubbitus
А сколько "мертвых" записей от неактивированных линков останется? Все равно чистить надо.
DeADMoroZ вне форума  
Старый 29.06.2005, 16:33     # 12
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
DeADMoroZ:
Все равно чистить надо.
Если действительно нужно, то можно его сразу же этим запросом и удалять, если он старее (Или удалять все кто старее определенного времени, также 1 запрос). Только это уже совсем другой вопрос, чем поставленный изначально!
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 29.06.2005, 17:13     # 13
DeADMoroZ
::VIP::
 
Аватар для DeADMoroZ
 
Регистрация: 21.08.2004
Адрес: Тула
Сообщения: 351

DeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ СэнсэйDeADMoroZ Сэнсэй
Hubbitus
Запрос-то один, а mysql нагружать будет конкретно..

Цитата:
Только это уже совсем другой вопрос, чем поставленный изначально!
Согласен полностью, имхо тему закрыть пора.
DeADMoroZ вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:22.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.