IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Уловие когда линк доступен Х дней от для регистрации (https://www.imho.ws/showthread.php?t=87966)

Прохожий_ 24.06.2005 09:56

Уловие когда линк доступен Х дней от для регистрации
 
Привет всем :beer:

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

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

Если сможете помочь, буду благодарен

DeADMoroZ 24.06.2005 11:11

Проще всего через timestamp
http://ru3.php.net/mktime
http://ru3.php.net/strtotime
RTFM - :yees:

Неизвестный 24.06.2005 14:16

Прохожий_
В скрипте сравниваешь дату регистрации с текущей датой + 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. Тут сказать не могу - не пользовался.

DeADMoroZ 24.06.2005 15:05

Цитата:

Сообщение от Неизвестный
Прохожий_
В скрипте сравниваешь дату регистрации с текущей датой + 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 дней.
Хотя крон все равно понадобится, чтобы очищать базу от старых, не активированных линков:)

Прохожий_ 25.06.2005 11:40

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";


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

N!trO 27.06.2005 15:05

Думаю последний вариант самый приемлемый. Систему не загружает и весьма маленький...

Hubbitus 28.06.2005 20:18

Цитата:

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

Неизвестный 29.06.2005 12:22

DeADMoroZ
Зачем крон, если можно проверять все в исполняющемся скрипте?

DeADMoroZ 29.06.2005 12:39

Неизвестный
Чтобы при каждом открытии страницы проверять всю базу? а если у тебя несколько тысяч посещений, тогда несколько тысяч раз в день перелопачивать всю базу? Не катит imho

Hubbitus 29.06.2005 15:40

Цитата:

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

DeADMoroZ 29.06.2005 16:22

Hubbitus
А сколько "мертвых" записей от неактивированных линков останется? Все равно чистить надо.

Hubbitus 29.06.2005 16:33

Цитата:

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

DeADMoroZ 29.06.2005 17:13

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

Цитата:

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


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

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