Как отобразить элементы в порядке даты, пока не будет отображено 30 элементов? - PullRequest
0 голосов
/ 26 января 2012

Для сайта событий у меня есть база данных событий. Каждый из них имеет id , title и date (Y-m-d).

Для моей страницы я хочу:

  1. Эхо всех событий, происходящих сегодня
  2. Если сегодня нет по крайней мере 30 событий, эхо-события происходят после сегодняшнего дня (в хронологическом порядке), пока на странице не отобразится не менее 30 событий
  3. Включите кнопку «Еще», которая повторяет следующие 30 событий

В настоящее время я использую AJAX и - по щелчку - заменяю «More» на код «more.php». Каков наилучший способ бесконечного зацикливания, когда каждый раз, когда вы нажимаете «Еще», загружается еще 30 событий?

Вот мой соответствующий код:

<?php
// All events happening today
$result = mysql_query("SELECT * FROM events WHERE date='$today'");
while($row = mysql_fetch_array($result))
  {
  $title = $row['title'];
  $date = $row['date'];
  echo $title;
  echo $date;
  }

// All events for next 9 days
for ($i=1; $i<=10; $i++)
  {
  $eventdate = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d")+$i, date("y")));
  $result = mysql_query("SELECT * FROM events WHERE date='$eventdate'");
  $row = mysql_fetch_array($result);
  while($row = mysql_fetch_array($result))
    {
    $title = $row['title'];
    $date = $row['date'];
    echo $title;
    echo $date;
    }
  }
?>

<!--More button-->
<script type="text/javascript"        
src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
  $(document).ready(function(){
    $("more").click(function(){
      $("more").load('more.php');
    });
  });
</script>

<more>More</more>

и more.php :

for ($i=11; $i<=20; $i++)
  {
  $eventdate = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d")+$i, date("y")));
  $result = mysql_query("SELECT * FROM events WHERE date='$eventdate'");
  $row = mysql_fetch_array($result);
  while($row = mysql_fetch_array($result))
    {
    $title = $row['title'];
    $date = $row['date'];
    echo $title;
    echo $date;
    }
}
// Another "More" button should go here

Очевидно, я не достигаю своих целей. Прямо сейчас, это повторяет:

  1. Все события с сегодняшнего дня (проверьте!)
  2. Каждое отдельное событие на следующие 9 дней (бу)
  3. На дополнительной странице показаны все события за 11-20 дней (бу)
  4. Он не зацикливается бесконечно, то есть я не могу нажать «Еще» в more.php

Я часами пробовал онлайн-уроки и не могу понять, как этого добиться. Любые советы приветствуются. Спасибо:)

1 Ответ

2 голосов
/ 26 января 2012

мое мнение таково:

  1. достижение хронологического порядка с помощью SQL Order By с использованием столбца даты - я забыл как "последний первый" в дате SQL (я думаю, что это был DESC). в любом случае, просто проверьте это.

  2. ограничение ваш запрос до 30 строк

  3. сохранение в сеансе последней строки (в начале 30).

  4. отображение страницы с результатами

  5. нажатие кнопки «Еще» приведет к загрузке еще 30 строк через AJAX, но на этот раз загрузка начнется с (значение переменной сеанса) +1. Таким образом, если вы загрузили первые 30, теперь мы начнем с 31 - 60 после получения 31 - 60 перезаписать существующую переменную сеанса, чтобы теперь она содержала 60.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...