2012-09-23 60 views
1

你可以看到我想在這裏做什麼http://perthurbanist.com/website/calendarloader.php。基本上它是一個水平日曆,你​​將使用箭頭移動。我想要做的是將代碼與所有日期(從當前的月份和日期開始)一起水平顯示所有月份。我知道如何使用日期函數獲取當前日期,但我不知道如何使日曆在該日期開始。我也希望它能夠加載很多個月(可能是2 - 3年)。我如何做這兩件事。使用PHP的臥式日曆

<?php 
$showday = date("j"); 
$displaymonth = date("M"); 
$showmonth = date("n"); 
$showyear = date("Y"); 

$day_count = cal_days_in_month(CAL_GREGORIAN, $showmonth, $showyear); 

echo '<ul class="calendarnavigation">'; 
echo '<li class="month">' . $displaymonth . '</li>'; 

for($i=1; $i<= $day_count; $i++) { 
echo '<li>' . $i . '</li>'; 
} 

echo '</div>'; 
?> 

回答

1

如果你知道(或者能夠計算出你想提前多遠天的時候,你可以試試這個:

for($i=0; $i<$numberOfDays; $i++) 
{ 
    $timestamp=mktime(0,0,0,date("m"),date("d")+$i,date("Y")); 
    $day=date("d", $timestamp); 
    $month=date("m", $timestamp); 
    $year=date("Y", $timestamp); 

    ...Your display stuff here... 

} 

環路上$timestamp的每次迭代將提前一天,在date功能使用它會給你,你需要創建您的顯示日期的信息。

也許在你的情況下,你可以使用

echo '<ul class="calendarnavigation">'; 

for($i=0; $i<$numberOfDays; $i++) 
{ 
    $timestamp=mktime(0,0,0,date("m"),date("d")+$i,date("Y")); 
    $showday=date("j", $timestamp); 
    $displaymonth=date("M", $timestamp); 
    $showmonth=date("n", $timestamp); 
    $showyear=date("Y", $timestamp); 

    if($showday=="1") 
    { 
     echo '<li>'.$displaymonth.'</li>'; 
    } 

    echo '<li>'.$showday.'</li>'; 

} 

echo '</ul>'; 
+0

太棒了!你有什麼建議我應該如何做導航?我想點擊箭頭,讓它滾動顯示更多,但我想創建一個新的月份標題顯示,所以你知道它是哪個月。 –

+0

它也說如果($ showday ==「1」)我如何使這個顯示在第一個月,即使這一天是23日的東西? –

+0

@ user1691978您可以將條件更改爲if($ showday ==「1」|| $ i == 0)',以使該月份在開始時顯示,無論日期如何。也許這可能會出現在循環之外,並且'ul'之外是一個固定的元素,您可以使用您用於執行滾動的JavaScript進行更改。 – Gareth