0

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

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

但这当然会出错。

任何人有任何建议thx

4

4 回答 4

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>

只是想我会指出你实际上可以像这样缩短三元组

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

抱歉,我有一些东西可以创建尽可能短的代码:)

于 2012-11-24T10:28:01.787 回答
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>
于 2012-11-24T10:30:33.830 回答
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>
于 2012-11-24T10:32:55.107 回答
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;

使用此代码

于 2012-11-24T10:58:39.080 回答