如何在选项列表循环中选择回显?

时间:2012-11-24 10:24:05

标签: php html echo

我想从下拉菜单中预先确定(=保留值,如果表单上有错误)我的值,这是我开始的:

    ...
    $priorities = array('low','normal','high'); 
    ...
    <select name="priority" id="priority">
       <?php 
          foreach ($priorities as $pro){
            echo '<option value="'.$pro.'">'.$pro.'</option>'; 
          }
        ?>
    </select>

它完成了这项工作,但没有预先坚持。

现在我想要达到这样的目的:

   <select name="priority" id="priority">
       <?php 
          $tel = 0;
          foreach ($priorities as $pro){
             echo '<option value="'.$tel.'"'.htmlentities('<?php if (isset($_POST[\'priority\']) && (int) $_POST[\'priority\'] === tel) { echo \'selected="selected"\'; } ?>').' >'.$pro.'</option>'; 
             $tel++;
          }
       ?>
    </select>

但那当然会出错。

任何人都有任何建议

4 个答案:

答案 0 :(得分:2)

以下是我经常实现的方法:

<select name="priority" id="priority">
    <?php
    foreach ($priorities as $pro)
    {
        $selected = (isset($_POST['priorities']) && $pro == $_POST['priority']) ? 'selected' : '';
        echo '<option value="' . $pro . '" '.$selected.'>' . $pro . '</option>';
    }
    ?>
</select>

以为我会指出你实际上可以像这样缩短ternary

<select name="priority" id="priority">
    <?php
    foreach ($priorities as $pro)
    {
        $selected = ($pro == @$_POST['priority']) ? 'selected' : '';
        echo '<option value="' . $pro . '" '.$selected.'>' . $pro . '</option>';
    }
    ?>
</select>

抱歉,我有一点可以创建最短的代码:)

答案 1 :(得分:0)

将代码的第二部分更改为:

<select name="priority" id="priority">
   <?php 
      foreach ($priorities as $pro) {
         if (isset($_POST['priority']) && $_POST['priority'] == $pro) {
            $selected = 'selected="selected"';
         }
         else {
            $selected = null;
         }
         echo '<option value="'.$pro.'" '.$selected.'>'.$pro.'</option>'; 
      }
   ?>
</select>

答案 2 :(得分:0)

试试这个

<select name="priority" id="priority">
   <?php 
      $tel = 0;
      foreach ($priorities as $pro){
         echo '<option value="' 
            .$tel
            .'"'
            .(isset($_POST['priority']) && (int)$_POST['priority'] === $tel)?'selected="selected"':''
            .' >'
            .$pro
            .'</option>'; 
         $tel++;
      }
   ?>
</select>

答案 3 :(得分:0)

$priority= array (1=>"low","normal","high");
    $select = "<select name=\"priority\"> ;
      foreach ($priority as $key => $val) {
        $select .= "\t<option val=\"".$key."\"";
        if ($val == $yourcheckedvariable) {
           $select .= " selected=\"selected\">".$val."</option>\n";
        } else {
        $select .= ">".$val."</option>\n";
    }
}
 $select .= "</select>";
echo $select;

使用此代码