2012-01-26 48 views
0

對於活動網站,我有一個活動數據庫。每個人都有一個ID,標題日期(Y-m-d)。如何按照日期順序回顯元素,直到回覆30個元素?

對於我的網頁,我想:今天

  1. 回聲所有事件發生今天
  2. 如果沒有至少30個事件,回聲事件今天后發生(按時間日期爲了),直到至少30個事件的頁面
  3. 上回蕩包括一個「更多」按鈕呼應未來30個事件

我目前正在使用AJAX,並且 - 點擊 - 用「more.php」代碼替換「More」。無限循環的最佳方式是什麼?每次點擊「更多」時它會加載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. 該地未來10天,每單事件(BOO)
  3. 越多頁顯示了11-20天的每一個事件(噓)
  4. 它不會無限地循環,即,我不能點擊「更多」,在more.php

我一直在嘗試了好幾個小時的在線教程,並不能找出如何實現這個循環我想要的。任何提示都表示讚賞。謝謝:)

回答

2

我對此採取的是:

  1. 使用SQL Order By使用日期欄實現按時間順序 - 我忘了 如何「最新第一」是在SQL日期(我認爲這是DESC )。無論哪種方式,只是測試它。

  2. limit查詢到30行

  3. store in a session最後一行(在開始的時候,30)。

  4. 呼應頁面的結果

  5. 點擊「更多」將加載通過AJAX另外30行,但這個時候,負載從(會話變量值)起+ 1,這樣一來,如果你加載首先30,我們現在從31 - 60開始。在得到31 - 60後,覆蓋現有會話變量,現在它將保持60。

+0

+1請注意,HTML中沒有''元素。她可能的意思是''。 – Tomalak

+0

僞編碼我猜。無論如何,這是可以理解的。 – Joseph

+0

也許我錯過了'ORDER BY'的日期和時間'WHERE date> = today'和'LIMIT n,30'。它會自動包含今天的所有事件,最多可達30個,或者如果少了,則會包含一些'> = today'。我很困惑你的「如果只有24讓他們點擊更多」。查詢可以獲取所有可用的內容,並且AJAX每次都返回一個新的'n'開始值。 – Leigh