2013-06-30 115 views
0

我有一個數據庫表,有兩列eventName|eventDate。我創建了一個接受startDate和endDate的函數,我想在ListView中顯示每個日期作爲標題的事件列表。PHP日曆顯示事件列表

在我下面的簡短示例中,我知道我可以使用SQL檢索完整事件列表。然後如何插入事件標題以便我可以將它們返回格式正確的數組中?

function retrieveEvents($startDate, $endDate) { 
    // run SQL query 
    // 
    if($stmt->rowCount() > 0) { 
     while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
      // how do I write this part such that I can output event headers in my array   
      $events = $row; 
     } 
    } 
} 

所以我打算輸出

1st July 2013 ($startDate) 
- Tea with President - 1300h 
- Mow the lawn - 1330h 
- Shave the cat - 1440h 
2nd July 2013 
- Shave my head - 0800h 
3rd July 2013 
4th July 2013 ($endDate) 
- Polish the car - 1000h 

回答

0

我結束了我在PHP中檢查,並只有當檢測到不同的日期時打印一個新行。

以下代碼可用於將來滿足某人的需求。

<?php 
     $currentPrintDay = 0; 
     $currentPrintMonth = 0; 
     $currentPrintYear = 0; 

     echo "<table>" 
     foreach($reservationsToShow as $row): 
     // get day, month, year of this entry 
     $timestamp = strtotime($row['timestamp']); 
     $day = date('d', $timestamp); 
     $month = date('m', $timestamp); 
     $year = date('Y', $timestamp); 

     // if it does not match the current printing date, assign it to the current printing date, 
     // assign it, print a new row as the header before continuing 
     if($day != $currentPrintDay || $month != $currentPrintMonth || $year != $currentPrintYear) { 
      $currentPrintDay = $day; 
      $currentPrintMonth = $month; 
      $currentPrintYear = $year; 

      echo 
      "<tr>" . 
      "<td colspan='100%'>". date('d-m-Y', $timestamp) . "</td>" . 
      "</tr>"; 
     } 
     // continue to print event details from here on... 
?> 
0

在你的MySQL查詢:

SELECT * FROM `yourTableName` WHERE `eventDate` >= $startDate AND `eventDate` <= $endDate 

PS:我不知道引號arount變量在查詢中。

PPS:從不使用*來選擇你的列,總是隻選擇你需要的列。在這裏,我使用它,因爲我不知道列的名稱

+0

嗨丹尼爾。感謝您的迴應。我知道如何編寫查詢。但我不知道如何正確格式化輸出數組,以便我可以將日期作爲相應的標題。 :) – chongzixin

+0

我認爲在SQL查詢中選擇需要的數據會更有效率,而不是從數據庫中獲取所有結果,並以PHP –

+0

處理它們。是的,我已經在使用上面提出的查詢了。更根本的是,我的問題在於如何在上面顯示我想要的輸出,因爲我想在列出事件之前先顯示日期。 – chongzixin