Добавить выбранный «атрибут» в поле выбора на основе времени PHP - PullRequest
0 голосов
/ 22 октября 2009

В настоящее время я использую следующий код PHP для создания окна выбора с различным временем:

 <?
 for ($x = 28; $x < 81; $x++) {
  if ($x == 48) {
  print "<option selected='selected' value='" . date("H:i:s", mktime(0, $x * 15, 0, 0, 0)) . "'>" . date("g:i a", mktime(0, $x * 15, 0, 0, 0)) . "</option>"; 
  }
   else {
   print "<option value='" . date("H:i:s", mktime(0, $x * 15, 0, 0, 0)) . "'>" . date("g:i a", mktime(0, $x * 15, 0, 0, 0)) . "</option>";
   }
 }
?>

Время указано с 15-минутными интервалами: 12:00:00 12:15:00 12:30:00 12:45:00 13:00:00 //etc...

То, что я хотел бы знать: как я могу указать текущее время, сделать ближайшее время «выбранным».

Например, если текущее время PHP: 12:32:14, я бы хотел выбрать «12:45 pm».

Есть идеи, как это сделать?

Ответы [ 2 ]

4 голосов
/ 22 октября 2009
<?php
$start = '7:00:00';
$end = '20:00:00';
$now = time();
$ts = strtotime($start);
$endTs = strtotime($end);
while ($ts <= $endTs)
{
    $selected = '';
    if ($ts - $now > 0 && $ts - $now <= 60*15)
        $selected = 'selected="selected"';
    $time = date('H:i:s', $ts);
    echo "<option $selected value='$time'>" . date("g:i a", $ts) . "</option>\n";
    $ts = strtotime('+15 minutes', $ts);
}
?>
1 голос
/ 22 октября 2009

Это начало. Вам нужно немного расширить условное выражение, чтобы не выводить «selected», когда выражение переходит в отрицательное значение.

 <?
 for ($x = 28; $x < 81; $x++) {
   $sel = '';
   //if the current time is within 15 minutes of the computed time, select this box.
   if ( (mktime(0, $x*15, 0, 0, 0) - time()) < (15*60) )  $sel = 'selected="selected"';
   print "<option $sel value='" . date("H:i:s", mktime(0, $x * 15, 0, 0, 0)) . "'>" . date("g:i a", mktime(0, $x * 15, 0, 0, 0)) . "</option>";
 }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...