ФорумПрограммированиеPHP для идиотов → увеличение(изменение) времени

увеличение(изменение) времени

  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz 18 марта 2010 г. 12:59

    Здравствуйте! передо мною стоит задача:
    нужно, чтоб один раз в неделю на сайте сменялась информация вывода из БД. есть раздел "популярные статьи", и нужно чтоб в этом разделе сменялся вывод инфы

    проблема в том, что я не знаю как сделать (высчитать) время…

    <?php
    $starttime = '15'; // начало работы - 15 число месяца (скажем так - 15 марта)
    $changetime = $starttime+7; // получаем дату, когда надо сделать изменения
    $curtime = date('d'); // текущий день
    if ($changetime == $curtime) { выполнять код}
    ?>


    загвоздка в вычислении $changetime
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 18 марта 2010 г. 13:03, спустя 3 минуты 17 секунд

    Через mysql event создаешь view каждую неделю
    Спустя 14 сек.
    И выводишь инфу только из view
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 18 марта 2010 г. 13:12, спустя 9 минут 50 секунд

    ещё есть замечательная функция strtotime
    // последний понедельник
    echo date('r', strtotime("last Monday"));
    Work, buy, consume, die
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz 18 марта 2010 г. 13:14, спустя 1 минуту 35 секунд

    спасибо!
    а можно по подробнее?
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 18 марта 2010 г. 13:17, спустя 2 минуты 47 секунд

    это мне вопрос?
    Work, buy, consume, die
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz 18 марта 2010 г. 13:27, спустя 10 минут 35 секунд


    Через mysql event создаешь view каждую неделю
    Спустя 14 сек.
    И выводишь инфу только из view


    можно по подробнее? спасибо!
    если можно, то покажите код…
    Спустя 34 сек.

    это мне вопрос?


    нет, спасибо!

    вот сейчас "играюсь с этой функцией"
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 18 марта 2010 г. 13:43, спустя 15 минут 27 секунд

    можно по подробнее? спасибо!
    можно и по-подробнее
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz 18 марта 2010 г. 13:49, спустя 6 минут 11 секунд


    можно по подробнее? спасибо!
    можно и по-подробнее


    мда…
    я не это имел ввиду!
    я не нашел как с php использовать mysql_event
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 18 марта 2010 г. 13:56, спустя 6 минут 48 секунд

    ilma55, товарищ, а ссылка в первом моем посте вам никак не помогла? И к пхп mysql event отношения не имеет
    Спустя 72 сек.
    На самом деле можете игнорировать мои посты тут, я всеравно предложил не то что вы хотите увидеть… мы не ищем простых путей
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 18 марта 2010 г. 14:49, спустя 52 минуты 50 секунд

    нужно, чтоб один раз в неделю на сайте сменялась информация вывода из БД. есть раздел "популярные статьи", и нужно чтоб в этом разделе сменялся вывод инфы

    Моя фамилия Мессинг и я читаю ваши мысли.
    - "сменить вывод инфы" значит взять следующую из запланированых записей.
    - ваши записи в БД пронумерованы от 1 до ХЗ

    Чтобы знать какую запись использовать, надо вычислить номер текущей недели (относительно "стартовой" даты)

    <?php

    $now = time(); // текущее время+дата в секундах с начала Эпохи Unix
    $dateX = mktime(0, 0, 0, 3, 8, 2010); // 8 марта тоже в секундах
    $daysAfter = intval(($now - $dateX) / (60 * 60 * 24));
    $weeksAfter = intval($daysAfter / 7);

    header('Content-type: text/plain; charset=utf-8');
    echo 'С '.date('d.m.Y', $dateX).' прошло дней: '.$daysAfter."\n";
    echo 'полных недель: '.$weeksAfter."\n";

    выведет

    С 08.03.2010 прошло дней: 10
    полных недель: 1


    Вобщем $weeksAfter - твой магический номер записи. Используй как сумеешь
    ιιlllιlllι унц-унц
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz 18 марта 2010 г. 14:52, спустя 3 минуты 41 секунду

    adw0rd, а вы работали с этими event'ами ???

    я не знаю куда его поместить?

    CREATE EVENT `add_new_data`
    ON SCHEDULE
    EVERY 1 DAY START '2010-28-03 23:59:59' END CURRENT_TIMESTAMP + INTERVAL 1 WEEK
    DO
    SELECT * FROM content WHERE (sectionid <> 5) AND (sectionid <> 0) ORDER BY RAND() LIMIT 2;

    в SELECT  я получаю 2 строки… и мне нужно чтоб эти 2 строки выводились целую неделю.
    потом в воскресенье снова происходит событие и я получаю опять новые 2 строки и они целую неделю отображаются… и вот так постоянно

    как это сделать???
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 18 марта 2010 г. 15:03, спустя 10 минут 42 секунды

    эти строчки надо не только извлечь, но и записать кудато. попробуй insert :)
    Спустя 185 сек.
    еще подсказка в продолжение моего предыдущего примера: номером недели ты можешь инициировать randomize:

    srand($weeksAfter);

    дальше сам думай. (хотя сомневаюсь!!!!адынадын)

    ιιlllιlllι унц-унц
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz 18 марта 2010 г. 15:04, спустя 1 минуту 9 секунд

    artoodetoo, спасибо! с этим я уже разобрался…

    я так проверяю?

    $cur_day = date('N');
    if ($cur_day == 1) { код }


    но теперь в другом загвоздка =(
    наверное нужен планировщик…
    нужно чтоб в определенное время (воскр 23:59:59) генерировались данные случайным образом ($query = "SELECT * FROM content WHERE (sectionid <> 5) AND (sectionid <> 0) ORDER BY RAND() LIMIT 2";  )
    в этом запросе я генерирую данные, и мне нужно чтоб на протяжении всей недели отображались эти данные.
    потомв воскр снова сгенерировались данные и тд
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 18 марта 2010 г. 15:10, спустя 5 минут 54 секунды

    offtopic: кто-то блять вставил рефреш на форум? у меня в процессе "быстрого ответа" стабильно происходит переброс на предыдущую страницу бля
    Спустя 78 сек.
    ты уже получил ответы на все вопросы

    p.s.

    srand(date('W'));

    ιιlllιlllι унц-унц
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 18 марта 2010 г. 15:35, спустя 25 минут 20 секунд

    ilma55, я не пишу о том с чем не работаю
    Спустя 27 сек.
    а, забыл добавить !!!!!!!!!!!!
    https://smappi.org/ - платформа по созданию API на все случаи жизни

Пожалуйста, авторизуйтесь, чтобы написать комментарий!