2016-05-17 3 views
0

Мне нужно включить календарь php на боковой панели моей страницы.php calendar с предыдущей и следующей не перезагружающей страницей

Я использую фрагмент, который я нашел несколько недель назад, поскольку я использовал его раньше, и он отлично работает. Но на этот раз я должен добавить следующие и предыдущие кнопки для отображения предыдущего или следующего месяца ...

Мой вопрос ... мне нужно изменить 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), которые могут помочь в этом. Ajax не такой сложный, как это происходит, особенно с jquery.Это помогает дать лучший пользовательский опыт, а также полностью стоит набрать, если вы можете посвятить пару часов ему. – nerdlyist

ответ

1

Я добавил $ now для параметра param теперь в 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

вы можете использовать $ finish вместо $ dtNow и только 1 день, а не 30. Заголовок, который вы можете заменить, как вам нравится, если вы знаете, как использовать функцию даты. – Richard

Смежные вопросы