【问题标题】:PHP form option selected [closed]选择了 PHP 表单选项 [关闭]
【发布时间】:2013-07-01 14:29:27
【问题描述】:

我正在使用下面的代码来自动填充下拉菜单的选项值。我正在尝试让它选择 30 号。现在它显示数字 30 两次无序。我如何让该序列显示 18-75 并预选 30 个。

<select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++) 
echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
echo '<option value=30 selected>30</option>';
?>
</select>

【问题讨论】:

  • 这是一个非常多余的问题。请先了解有关该主题的现有问答,然后确定具体问题。在一个表达式中使用 echo 和 sprintf() 以某种方式表明您难以掌握一般理解。我会从那个时候开始改进,否则你会犯越来越多的错误,你会一直在想。
  • @hakre 问题在下方回答了多次,其他人理解
  • 我写的多余。由于这是一个超级副本,如果您想问这样的问题,请概述与您包含的许多其他现有材料不同的具体部分。从这个意义上说,您的问题完全不清楚。不清楚您为什么要问它,因为过去已经回答过。

标签: php selection


【解决方案1】:

使用下面的代码

<select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++) {
    $selected = '';
    if($k == 30){
        $selected = 'selected="selected"';
    } else {
        $selected = '';
    }
    echo '<option value='.sprintf("%02d", $k).' '.$selected.' >'.sprintf("%02d", $k).'</option>'; 

}
?>
</select>

【讨论】:

    【解决方案2】:

    正确的方法是

    <select name="age2" class="numb">
    <?php 
    for ($k = 18; $k <= 75; $k++) 
    {
      if($k!=30)
      {
       echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
      }
      else
      {
       echo '<option selected="selected" value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
      }
    }   
    ?>
    </select>
    

    【讨论】:

    • +1。也需要一点解释。
    • 大声谢谢,抱歉在移动端
    • 不,原来的for 循环只运行第一行,因为它们没有在{ braces } 中分组。
    • @icedwater 哎呀,你是对的,这让我的解释错了
    • 好吧,我引起了你的注意,不是吗? :P
    【解决方案3】:

    您只需在每次迭代中检查该值,如果值为 30,则回显。

    <select name="age2" class="numb">
    <?php 
    for ($k = 18; $k <= 75; $k++){
      $value = sprintf("%02d", $k) ; ?>
      <option value='<?php echo $value ; ?>' <?php echo ($value == 30) ? "selected" : "" ; ?>><?php echo $value ; ?></option> 
    <?php } ?>
    </select>
    

    【讨论】:

      【解决方案4】:

      30 显示不按顺序显示,因为您没有将语句包含在一组大括号中,因此 for 循环仅在第一行循环。 30 仅在整个循环完成后打印,即在$k == 75 之后。

      如果您以后必须更改数字,我建议定义一个 $default 值:

      <select name="age2" class="numb">
      <?php 
          $default = 30;
          for ($k = 18; $k <= 75; $k++) {
              if ($k == $default) {
                  echo '<option value=' . $default . 'selected>' . $default . '</option>';
              } else {
                  echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>';
              }
          }
      ?>
      </select>
      

      【讨论】:

        【解决方案5】:
        <select name="age2" class="numb">
        <?php 
        for ($k = 18; $k <= 75; $k++) 
         echo '<option value='.sprintf("%02d", $k).  (if($k==30)?'selected="selected"':"").'>'.sprintf("%02d", $k).'</option>'; 
         }
        ?>
        </select>
        

        【讨论】:

          【解决方案6】:

          您在每次循环迭代中添加 30 选项,您必须将其置于某种条件下

              <select name="age2" class="numb">
          <?php 
          for ($k = 18; $k <= 75; $k++) {
          if($k ==30)
          {
           echo '<option selected="selected" value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
          
          }
          else
          {
            echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
          }  
          
          } 
          ?>
          </select>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-05-28
            • 1970-01-01
            • 2015-08-17
            • 1970-01-01
            • 1970-01-01
            • 2013-04-22
            • 1970-01-01
            • 2016-03-08
            相关资源
            最近更新 更多