Я создал HTML-форму, и в ней у меня есть опции, содержащие дни месяца. Проблема возникает, когда я хочу установить сегодняшнюю дату, выбранную при загрузке на странице.
У меня есть этот код, но он не работает, и просто показывает сегодня, а другие дни месяца прошли! $day1
дата сегодняшнего дня по функции даты.
<select id="day" name="day">
<?php for ($i=1 ; $i<32 ; $i++){
if($i == $day1){?>
<option value="<?php echo $i ?>" selected> <?php echo $i ?></option>
<?php}else{ ?>
<option value="<?php echo $i ?>" > <?php echo $i ?></option>
<?php }} ?>
</select>
Попробуйте добавить пробел между открывающим тегом PHP и «} else {«. Это работает для меня:
<?php
$day1=date('d');
?>
<select id="day" name="day">
<?php for ($i=1 ; $i<32 ; $i++){
if($i == $day1){?>
<option value="<?php echo $i; ?>" selected> <?php echo $i; ?></option>
<?php }else{ ?>
<option value="<?php echo $i; ?>" > <?php echo $i; ?></option>
<?php }} ?>
</select>
На самом деле я не могу найти какую-либо информацию об этом в документации, кроме вкладов пользователей:
Я хотел бы подчеркнуть, что открывающий тег
«<?php[whitespace]
«, не просто «<?php
».
это легко сделать с помощью встроенного оператора IF + echo и dot
<select id="day" name="day">
<?php
$day1=date('d');
for ($i=1 ; $i<32 ; $i++){
echo '<option value="'.$i.'" '. ($i == $day1 ? 'selected' : '') . '>'.$i.'</option>';
}
?>
</select>
Другие дни прошли, потому что вы не повторили это.
<select id="day" name="day">
<?php $day1=date('d'); ?>
<?php for ($i=1 ; $i<32 ; $i++){
if($i === $day1){?>
<option value="<?php echo $i ?>" selected> <?php echo $i ?></option>
<?php }else{ ?>
<?php echo '<option value="'.$i.'">'.$i.'</option>'; ?>
<?php }} ?>
</select>