2015-04-06 3 views
-5

Я хочу загрузить даты в первом выпадающем меню. Во втором раскрывающемся списке я загружаю временные интервалы. Если выбрана сегодняшняя дата [06-04-2015], то временной интервал должен загружаться через два часа. Если выбраны [07-04-2015] или [08-04-2015] на следующий день, временной интервал должен начинаться с 9.00 утра.Время загрузки в раскрывающемся списке php

До сих пор моя работа

<select class="form-control" name="ddate" > 
<option value="<?php echo date('d-m-Y') ;?>"><?php echo date("d-m-Y", time()) ;?></option> 
<option value="<?php date("d-m-Y", time()+86400) ;?>"><?php echo date("d-m-Y", time()+86400) ;?></option> 
<option value="<?php echo date("d-m-Y", time()+172800) ;?>"><?php echo date("d-m-Y", time()+172800) ;?><option> 
</select> 
<?php 
$timeAtHalfHour = time() - (time() % (60*60)); 
$timeAtHalfHour += 120*90; //IDK IF YOU WANT THIS? 
$endTime = strtotime('11:00 pm'); 
$numIntervals = ($endTime - $timeAtHalfHour)/(60*60); 
echo "<select name='timeInterval'>"; 
$strTime1 = date('h:iA', $timeAtHalfHour); 
foreach(range(1,$numIntervals) as $cur) 
{ 
    $thisTime = $timeAtHalfHour + 60*60*$cur; 
    $strTime2 = date('h:iA', $thisTime); 
    echo "<option value=$cur>$strTime1 - $strTime2 </option><br />"; 
    $strTime1 = $strTime2; 
} 
echo "</select>"; 
?> 

ответ

1

Вы должны сделать это в JavaScript. На ваш вопрос вы упомянули:

Если текущая дата [06-04-2015] является выбран

PHP выполняется на стороне сервера, он не может обрабатывать событие выбора элемент в вашем списке.

Javascript может это сделать, потому что он работает со стороны браузера, и вы можете обрабатывать это событие. Вы можете использовать JQuery Дю, что вы хотите, вот фрагмент кода, который может помочь вам начать:

$("form-control[name=ddate]").change(function(){ 
    $(this).children(":selected"); // This get you all the selected items 
}); 

EDIT: Окончательный код с JQuery и PHP:

<html> 
<head> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
</head> 
<body> 

    <select class="form-control" name="ddate" > 
    <option value="<?php echo date('d-m-Y') ;?>"><?php echo date("d-m-Y", time()) ;?></option> 
    <option value="<?php echo date("d-m-Y", time()+86400) ;?>"><?php echo date("d-m-Y", time()+86400) ;?></option> 
    <option value="<?php echo date("d-m-Y", time()+172800) ;?>"><?php echo date("d-m-Y", time()+172800) ;?><option> 
    </select> 
    <?php 

    echo "<select name='timeInterval' id='timeInterval'>"; 
    $start = new DateTime('9AM'); 
    $end  = new DateTime('11PM'); 
    $interval = new DateInterval('PT1H'); // Set the interval to One hour 
    $period = new DatePeriod($start, $interval, $end); 

    foreach ($period as $dt) 
    { 
     $dt2 = clone $dt; 
     $dt2->add(new DateInterval('PT1H')); // Add One hour 
     echo '<option value="'.$dt->format("G").'">'.$dt->format("h:iA").' - '.$dt2->format("h:iA").' </option><br />'; 
    } 

    echo "</select>"; 
    ?> 


    <script> 
     $(document).ready(function() { 
      var d = new Date(); 
      var hour = d.getHours()+2; 
      $('#timeInterval option[value="'+hour+'"]').prop('selected', true); 
     }); 
     $(".form-control[name=ddate]").change(function(){ 
      selDate = $(this).children(":selected").val(); 
      var d = new Date(); 
      var month = d.getMonth()+1; 
      var day = d.getDate(); 
      var hour = d.getHours()+2; 

      var curDate = (day<10 ? '0' : '') + day + '-' + 
      (month<10 ? '0' : '') + month + '-' + 
      d.getFullYear(); 

      // If selected date is equal to the current Date 
      if(selDate != curDate) 
       $('#timeInterval option:eq(0)').prop('selected', true); // Select 9:00 AM 
      else 
       $('#timeInterval option[value="'+hour+'"]').prop('selected', true); // Select the next 2 Hours 
     }); 
    </script> 
</body> 
</html> 
+0

ок .... Как установить время начала? Он должен начинаться с 9.00, если на следующий день выбран –

+0

. Проверьте это: https://learn.jquery.com/using-jquery-core/selecting-elements/ –

+0

Можете ли вы показать полный рабочий код для вышеуказанного –

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