Понедельная пагинация

(Ответов: 7, Просмотров: 494)
  1. Дипломник
    • Регистрация: 13.11.2013
    • Сообщений: 159
    • Репутация: 4
    • Webmoney BL: ?
    Всех форумчан с праздниками!

    Прошу помощи с реализацией понедельной пагинации. Есть каталог с релизами и анонсами с ~2005го по ~2016й год (к примеру). При попадании на главную страницу каталога, бд должна вывести все материалы текущей недели (с группировкой по дням?). При этом пользователь имеет возможность перемещаться по средствам пагинации как к прошлым неделям, так и будущим. В бд есть столбец с датой выхода в формате xxxxxxxx год месяц число. Подобный пример реализации понедельной пагинации нашел на сайте _http://www.gamespot.com/new-games . У кого есть соображения по этому поводу буду очень благодарен)
    • 0
  2. PHP Developer Аватар для HiNeX
    • Регистрация: 26.04.2012
    • Сообщений: 222
    • Репутация: 47
    • Webmoney BL: ?
    Есть такой вариант:
    Код:
    SELECT * FROM `base`.`table` WHERE `date` BETWEEN date_sub(now(),INTERVAL 2 WEEK) AND date_sub(now(),INTERVAL 1 WEEK);
    Обратите внимание на:
    INTERVAL 1 WEEK - это как вам уже стало очевидно интервал за одну неделю, просто увеличивайте значение интервалов.
    • 1

    Спасибо сказали:

    waterfly(09.01.2015),
  3. Дипломник
    • Регистрация: 13.11.2013
    • Сообщений: 159
    • Репутация: 4
    • Webmoney BL: ?
    HiNeX, если я правильно понимаю, проблема в формате даты. В поле date у меня заносится значение 20150101, а date_sub ищет по формату 2015-01-01. Или я не правильно понимаю.
    • 0
  4. PHP Developer Аватар для HiNeX
    • Регистрация: 26.04.2012
    • Сообщений: 222
    • Репутация: 47
    • Webmoney BL: ?
    waterfly, верно, для даты лучше использовать DATE и соответственно DATETIME, в ином случае придется велосипедить на PHP.

    PHP код:
    $from date('Ymd'strtotime('-2 week'));
    $to date('Ymd'strtotime('-1 week')); 
    Код:
    SELECT * FROM `base`.`table` WHERE `date` BETWEEN '{$from}' AND '{$to}';
    • 0
  5. Дипломник
    • Регистрация: 13.11.2013
    • Сообщений: 159
    • Репутация: 4
    • Webmoney BL: ?
    HiNeX, так, уже кое что выходит. Пробую теперь прикрутить к кнопкам пагинации.
    • 0
  6. Дипломник Аватар для PsyX
    • Регистрация: 17.12.2012
    • Сообщений: 160
    • Репутация: 19
    • Webmoney BL: ?
    что мешает сортировку с убыванием сделать?
    • 0
  7. Дипломник
    • Регистрация: 13.11.2013
    • Сообщений: 159
    • Репутация: 4
    • Webmoney BL: ?
    Цитата Сообщение от PsyX Посмотреть сообщение
    сортировку с убыванием
    несовсем понял. Объясните.
    • 0
  8. Дипломник
    • Регистрация: 13.11.2013
    • Сообщений: 159
    • Репутация: 4
    • Webmoney BL: ?
    Собственно, вот. В процессе пришлось отказаться от идеи недельной пагинации в пользу месячной. Только теперь не получается вывести дату совместно с днем недели.
    PHP код:
    <?php 

    $tables_array 
    = array();
    $rusDays = array("Воскресенье""Понедельник""Вторник""Среда""Четверг""Пятница""Суббота"); // Создаем массив "дней недели", в соответствии с порядком параметра %w

    $queryId mysql_query("SELECT title, rdate, [B]DATE_FORMAT(`rdate`, '%w')[/B] AS `weekday` FROM index WHERE 
    MONTH(`rdate`) = \"
    $m\" 
    AND YEAR(`rdate`) = \"
    $y\" ORDER BY rdate asc");

    // "Сортируем" полученный результат и создаем двумерный 
    // массив "дней недели" и содержащихся в них строк,
    // возвращенных из БД

    while ($result mysql_fetch_assoc($queryId)) {
        
    $tables_array[$result['weekday']][] = $result;


    // Обрабатываем все значения массива, присваивая
    // переменной $weekday - ключ (который является в нашем
    // случае днем недели (от 0 до 6, где 0 - воскресенье, 6- суббота)
    // Присваиваем переменной $rows - значения в массиве, который
    // в нашем случае содержит строки из БД 

    foreach ($tables_array as $weekday => $rows) {
        echo 
    "<h4>".$rusDays[$weekday]."</h4>";
        
        foreach (
    $rows as $row) { // обрабатываем все строки и выводим их в РАЗНЫХ таблицах....
            
    echo "<p><b>".$row['title']." </b></p>";
        }

     
    ?>
    В итоге получаем:
    Январь 2015
    Четверг
    Материал1
    Материал2
    Материал3
    Воскресение
    Материал4
    Пятница
    Материал5
    Материал6
    Материал7
    Материал8


    У кого есть мысли как добавить дату ко дню недели?
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Пагинация и SEO
Вопросы от новичков 10 15.11.2014 15:57
Не работает пагинация
WordPress 0 11.11.2014 18:17
Пагинация фото
WordPress 3 23.08.2014 14:16
Пагинация joomla 2.5
Joomla 6 11.12.2013 18:46
Пагинация длинных статей
Вопросы от новичков 6 25.03.2012 23:01

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры