PHP дата-зависимая нумерация страниц - PullRequest
1 голос
/ 18 февраля 2009

У меня есть сайт, который хранит кучу записей в базе данных sql, которые я хочу перетащить на страницу на основе даты, которая хранится в формате Y-m-d в sql. Но я хочу разбить результаты на день.

Итак, для индекса я хочу показать все результаты текущего дня, для которых я собирался использовать функцию php date () в качестве WHERE в моем QUERY. Но я наткнулся на препятствие при выполнении нумерации страниц. Я хочу иметь кнопки внизу, которые переходят на следующую страницу с get, поэтому index.php? Page = 2 будет завтра, но я не могу понять, как надежно выбрать «завтра» из базы данных в моем WHERE.

Видите ли, я собирался использовать дату ("U"), чтобы получить время Unix в секундах первого дня на первой странице, а затем просто добавить 3600 * $ _ GET ['page'] для увеличения даты на Следующие страницы, но это похоже на неаккуратный способ сделать это, что может привести меня в замешательство. Это единственный способ или есть лучшее, более практичное решение - большое спасибо, ребята, я ценю это.

Ответы [ 3 ]

1 голос
/ 18 февраля 2009

Если страница 2 завтра, то вы будете смотреть на что-то вроде этого:

$days_ahead = $page - 1;
$query = "... WHERE date = DATE(NOW()) + INTERVAL $days_ahead DAY ...";

Обратите внимание, что на первой странице это также будет работать нормально (при условии, что $ page по умолчанию равен 1), к сегодняшней дате добавится 0 дней.

0 голосов
/ 12 мая 2014

Вот так мне удалось исправить это для моего сайта

//'page' is a GET variable from url
if($page<=1) {
  $datemax = time();
  $datemin = time() - (1 * 2592000); //2592000 being seconds in a month
}
else{
  $datemax = time() - (($page - 1) * 2592000);
  $datemin = time() - ($page * 2592000);
}

И тогда, очевидно, запрос будет выглядеть примерно так:

SELECT * FROM posts WHERE dateposted >=$datemin AND dateposted <=$datemax
0 голосов
/ 18 февраля 2009

Вы экспериментируете с strtotime:

$sqldate = date('Y-m-d', strtotime('+2 days'));
...