【问题标题】:default value in option选项中的默认值
【发布时间】:2023-05-19 13:10:01
【问题描述】:

我创建了一个 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>

【问题讨论】:

  • $day1 is date of today by date function. $day1 的值究竟是多少?显示设置此值的代码。
  • $day1=date('d');抱歉 :) 这是一个月中的某一天,比如 21 或 3
  • if 之前使用var_dump($i == $day1); 以查看它是否显示false 以外的内容。如果您看到true,则可能是浏览器问题。

标签: php forms html-select options


【解决方案1】:

使用内联 IF + echo 和点运算符可以轻松实现

<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>

【讨论】:

  • 非常感谢..我熟悉点运算符..谢谢
【解决方案2】:

其他日子已经过去了,因为你没有回应它。

<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>

【讨论】:

    【解决方案3】:

    尝试在 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>
    

    实际上,除了用户贡献之外,我在文档中找不到任何关于此的信息:

    我想强调的是,开始标签是 “&lt;?php[whitespace]”,而不仅仅是“&lt;?php”。

    【讨论】:

    • 嗯,好像开始标签后面必须跟一个空格。然而,结束标签似乎并没有遵循同样的规则。
    • 谢谢@Avalanche ..如果您阅读了 puni 提供的答案。