Поле выбора PHP с несколькими вариантами времени и даты

0

Я хочу, чтобы на моем веб-сайте была выбрана коробка, в которой есть несколько вариантов (до 3 дней в будущем с сегодняшнего дня)

и для отображения таких параметров, как:

<optgroup>Wednesday 8th Janurary (tomorrow)</optgroup>
<option>08:00 - 10:00</option>
<option>10:00 - 12:00</option>

с 09:00 до 17:00 каждый день и до 3 дней в будущем

я нашел это в Интернете, но я не слишком уверен, как закончить его, как я этого хочу:

$start = "11:00";
    $end = "13:30";

    $tStart = strtotime($start);
    $tEnd = strtotime($end);
    $tNow = $tStart;

    while($tNow <= $tEnd){
      echo date("H:i",$tNow)."\n";
      $tNow = strtotime('+30 minutes',$tNow);
    }

ОБНОВИТЬ:

Я также пробовал:

<select name="time">
    <?php for($i = 1; $i <= 24; $i++) {
        echo '<option value="'.$i.'">'.date("h.iA", strtotime("$i:00")).'</option>';
    }
    ?>
    </select>

но его просто показывать все время

ОБНОВИТЬ:

Ок обновить от ответа:

Я пробовал делать:

<select name="time"><?php
    for ($i = 0; $i <= 3; ++$i) {
        echo '<optgroup label="'.date('l j F', strtotime('+ ' . $i . ' day')).'">';
        for ($n = 9; $n < 16; $n = $n + 3) {
            if(!$n > date("H")) {
                echo '<option>'.$n.':00 - '.($n+2).':00</option>';
            }
        }
        echo '</optgroup>';
    }
    ?></select>

где я добавил в выражении if его теперь не показывая никаких времен. Я хочу удалить время, которое уже произошло, если это возможно?

  • 4
    Это мило. Каков твой вопрос?
  • 1
    ты что-нибудь пробовал? покажи нам свои усилия?
Показать ещё 4 комментария
Теги:

2 ответа

0
Лучший ответ

Итак, вы хотите, чтобы он начинался в 09:00, заканчивался в 17:00 и имел два часа слота на один вариант?

Тогда это:

<select>

<?php for ($i = date('G') < 17 ? 0 : 1; $i <= 2; ++$i) { ?>

  <optgroup label="<?php echo date('l j F', strtotime('+ ' . $i . ' day')); echo !$i ? ' (Today)' : (1 === $i ? ' (Tomorrow)' : ''); ?>">

    <?php for ($n = 9; $n < 16; $n += 2) { if ($i || date('G', strtotime('+ 15 minutes')) < $n + 2) { ?>

      <option><?php echo str_pad($n, 2, '0', STR_PAD_LEFT); ?>:00 - <?php echo str_pad($n + 2, 2, '0'); ?>:00</option>

    <?php } } ?>

  </optgroup>

<?php } ?>

</select>
  • 0
    да почти! как я могу заставить времена исчезнуть, если они произошли? например, он показывает сегодняшнее время и имеет все 3 опции, которые больше не доступны?
  • 0
    Это показывает время с 9 сегодня, которое ОП не хотело, и 4 дня вместо 3
Показать ещё 10 комментариев
0

Я только сделал некоторые незначительные изменения в усилиях мистера Раштона. Для меня это заслуга мистера МайклаРуштона. Но все же здесь

    <select>

<?php for ($i = 1; $i <= 2; ++$i) { ?>

  <optgroup label="<?php echo date('l j F', strtotime('+ ' . $i . ' day')); ?>">
    <?php if($i==0) { ?>
    <?php for ($n = date('H'); $n < 16; $n += 3) { ?>
      <option><?php echo str_pad($n, 2, '0', STR_PAD_LEFT); ?>:00 - <?php echo str_pad($n + 2, 2, '0'); ?>:00</option>
    <?php } }?> 
    <?php for ($n = 9; $n < 16; $n = $n + 3) { ?>

      <option><?php echo str_pad($n, 2, '0', STR_PAD_LEFT); ?>:00 - <?php echo str_pad($n + 2, 2, '0'); ?>:00</option>

    <?php } ?>

  </optgroup>

<?php } ?>

</select>
  • 0
    проверьте мое обновление в конце моего вопроса
  • 0
    Приведенный выше код сделает вашу работу ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню