Нам нужно выбирать статьи из таблицы за определенные даты (числа), с этим понятно.
Но к этому всему нужно устроить навигацию, то есть выбор нужной даты (числа).
Задача:
1. Вид
10 11 12 13 14 15 16
Выделил жирным число за которое нам нужно выбрать информацию.
2. Выводить навигационные числа только в том случаи если статьи за эту дату существуют
3. Выводить 3 записи до выбранной даты и 3 после, если существуют.
Для себя нашел решение следующее:
(но не совсем работающее)$last_story = mysqli_fetch_array($mysqli->query("SELECT date FROM stories ORDER BY date DESC LIMIT 1"));
$date = date('Ymd', strtotime(date($last_story['date'])));
$previous = $mysqli->query("SELECT DISTINCT date FROM stories WHERE date<'".date('Y-m-d', strtotime(date($date)))."' ORDER BY date DESC LIMIT 3");
while($prev = mysqli_fetch_array($previous)) {
echo '<a href="?archive='.date('Ymd', strtotime($prev['date'])).'">'.date('d', strtotime($prev['date'])).'</a> ';
}
echo '<b>'.date('d', strtotime(date($date))).'</b> ';
$nexts = $mysqli->query("SELECT DISTINCT date FROM stories WHERE date>'".date('Y-m-d', strtotime(date($date)))."' ORDER BY date LIMIT 3");
while($next = mysqli_fetch_assoc($nexts)) {
echo '<a href="?archive='.date('Ymd', strtotime($next['date'])).'">'.date('d', strtotime($next['date'])).'</a> ';
}
Код любительский ;)
Результат:12 11 10 13 14 15 16
Числа после выбранной даты выводит правильно, а вот перед этой датой выводит так сказать ЗАДОМ наперёд.
$previous = $mysqli->query("SELECT DISTINCT date FROM stories WHERE date<'".date('Y-m-d', strtotime(date($date)))."' ORDER BY date DESC LIMIT 3");
Все это потому что при выборке стоит "ORDER BY date DESC". Ставлю "ASC" - выбирает не правильно, так как идет от меньшей даты.
Что подскажите?