2016-05-17 4 views
0

私のページのサイドバーにPHPカレンダーを含める必要があります。前と次のページが読み込まれていないPHPカレンダー

私は数週間前に見つけたスニペットを使用しています。前に使用していたので、うまくいきます。しかし今度は、前月または次の月を表示するために次と前のボタンを追加する必要があります。

私の質問は...今月を生成するPHPを変更する必要がありますか?

これは私がこれまで持っているものです。

<table class="month"> 
    <tr class="days"> 
     <td>Mon</td> 
     <td>Tues</td> 
     <td>Wed</td> 
     <td>Thurs</td> 
     <td>Fri</td> 
     <td>Sat</td> 
     <td>Sun</td> 
    </tr> 
     <?php 

    $today = date("d"); // Current day 
    $month = date("m"); // Current month 
    $year = date("Y"); // Current year 
    $days = cal_days_in_month(CAL_GREGORIAN,$month,$year); // Days in current month 

    $lastmonth = date("t", mktime(0,0,0,$month-1,1,$year)); // Days in previous month 

    $start = date("N", mktime(0,0,0,$month,1,$year)); // Starting day of current month 
    $finish = date("N", mktime(0,0,0,$month,$days,$year)); // Finishing day of current month 
    $laststart = $start - 1; // Days of previous month in calander 

    $counter = 1; 
    $nextMonthCounter = 1; 

    if($start > 5){ $rows = 6; }else {$rows = 5; } 

    for($i = 1; $i <= $rows; $i++){ 
     echo '<tr class="week">'; 
     for($x = 1; $x <= 7; $x++){    

      if(($counter - $start) < 0){ 
       $date = (($lastmonth - $laststart) + $counter); 
       $class = 'class="blur"'; 
      }else if(($counter - $start) >= $days){ 
       $date = ($nextMonthCounter); 
       $nextMonthCounter++; 

       $class = 'class="blur"'; 

      }else { 
       $date = ($counter - $start + 1); 
       if($today == $counter - $start + 1){ 
        $class = 'class="today"'; 
       } 
      } 


      echo '<td '.$class.'><span class="dayWrap">'. $date . '</span></td>'; 

      $counter++; 
      $class = ''; 
     } 
     echo '</tr>'; 
    } 

?> 
</table> 
    <div class="changeMonthLinks"> 
    <a class="col-xs-12" href="">< Prev</a> 
    <a class="col-xs-12 aright" href="">Next ></a> 
    </div> 

私はちょうど続行する方法がわからない...または私はアンカータグに追加する何が必要なのか:S

すべてのヘルプそれを感謝するでしょう。

ありがとうございました ありがとうございます!

+0

質問は、あなたがこのサイドバーのカレンダーが更新されたときにページがリロードしたいんですね。 – nerdlyist

+0

理想的には!!しかし、私はajaxでそれを行う必要があると思うし、それはさらに難しいです:( –

+1

そこに良いクライアント側(js/jquery)のカレンダー "フレームワーク"の数がそこに助けることができます。特にjqueryを使用すると複雑になりますが、これは数時間を費やすことができれば、より良いユーザーエクスペリエンスを提供するのにも役立ちます。 – nerdlyist

答えて

1

私はparamに$ nowを追加しました。これはurlにあり、strtotimeを変数$ dtNowに解析すると、すべての日付関数が拡張され、下のリンクは?now = $ dtNow + 1ヶ月となりました= $ dtNow - ?月

ここでコード

<?php 

$now = ''; 
if(isset($_GET['now'])) 
    $now = $_GET['now']; 

$dtNow = strtotime($now); 
if(!$dtNow) 
{ 
    $dtNow = time(); 
} 
echo "<h1>Today is " . date('Y-m-d', $dtNow) . "</h1>"; 

?> 
<table class="month"> 
    <tr class="days"> 
     <td>Mon</td> 
     <td>Tues</td> 
     <td>Wed</td> 
     <td>Thurs</td> 
     <td>Fri</td> 
     <td>Sat</td> 
     <td>Sun</td> 
    </tr> 
    <?php 


    $today = date("d", $dtNow); // Current day 
    $month = date("m", $dtNow); // Current month 
    $year = date("Y", $dtNow); // Current year 
    $days = cal_days_in_month(CAL_GREGORIAN,$month,$year); // Days in current month 

    $lastmonth = date("t", mktime(0,0,0,$month-1,1,$year)); // Days in previous month 

    $start = date("N", mktime(0,0,0,$month,1,$year)); // Starting day of current month 
    $finish = date("N", mktime(0,0,0,$month,$days,$year)); // Finishing day of current month 
    $laststart = $start - 1; // Days of previous month in calander 

    $counter = 1; 
    $nextMonthCounter = 1; 

    if($start > 5){ $rows = 6; }else {$rows = 5; } 

    for($i = 1; $i <= $rows; $i++){ 
     echo '<tr class="week">'; 
     for($x = 1; $x <= 7; $x++){ 

      if(($counter - $start) < 0){ 
       $date = (($lastmonth - $laststart) + $counter); 
       $class = 'class="blur"'; 
      }else if(($counter - $start) >= $days){ 
       $date = ($nextMonthCounter); 
       $nextMonthCounter++; 

       $class = 'class="blur"'; 

      }else { 
       $date = ($counter - $start + 1); 
       if($today == $counter - $start + 1){ 
        $class = 'class="today"'; 
       } 
      } 


      echo '<td '.$class.'><span class="dayWrap">'. $date . '</span></td>'; 

      $counter++; 
      $class = ''; 
     } 
     echo '</tr>'; 
    } 

    ?> 
</table> 
<div class="changeMonthLinks"> 
    <a class="col-xs-12" href="?now=<?php echo date('Y-m-d', $dtNow - 30*24*60*60); ?>">< Prev</a> 
    <a class="col-xs-12 aright" href="?now=<?php echo date('Y-m-d', $dtNow + 30*24*60*60); ?>">Next ></a> 
</div> 
+0

WOw !!あなたは華麗です!ありがとうございます! しかし、今月は無視して今日の数字を「今日」としていますので、今月は17日に表示されますが、前月を表示すると17日はまだ「今日」です。 –

+1

$ ttNowの代わりに$ finishを使用できます.30日ではなく1日だけ使用できます。ヘッダーは、日付機能の使用方法が分かっている場合、好きなもので置き換えることができます。 – Richard

関連する問題