2012-03-26 63 views
0

说我有一个包含由存储在我的数据库中的值填充的下拉列表形式:HTML选择窗体保持下拉值PHP

<form action="" method="POST"> 
    <select name="item_select"> 
    <?php 
    $query = "SELECT * FROM my_table ORDER BY name"; 
    $result = mysql_query($query); 
    while ($row = mysql_fetch_object($result)) { 
    ?> 
     <option value=<?php echo $row->id; ?> > <?php echo $row->name; ?></option> 
     <?php }// end while?> 
    </select> 
    <br /><br /> 
    <input name="action_1" type="submit" value="Action 1" /> 
    <input name="action_2" type="submit" value="Action 2" /> 
</form> 

这一切工作正常,但我有一个小的美学问题我想看看我能否修复。特别是每次提交表单时,无论选择哪一个,下拉列表都会选择列表中的第一个项目。例如。

List: 
Item1 (selected) 
Item2 

我选择的项目2和提交表格,页面提交它仍然是后

List: 
Item1 (selected) 
Item2 

有没有办法有下拉“记住”选中了哪个项目?例如,在为Item2提交表单后应该达到期望的效果。

List: 
Item1 
Item2 (selected) 

回答

2

只是当前一个for循环比较submited值:

<option value="<?php echo $row->id ?>" <?php echo $row->id == $_POST['item_select'] ? 'selected' : '' ?> ><?php echo $row->name ?></option> 
+0

漂亮,这正是我一直在寻找。再次感谢! – 2012-03-26 16:02:41

1

个人而言,我不得不说,这一切对于你选择,多选和单选输入的功能。但只有当你需要多次这样做。例如:

function checker($type, $positive, $value) { 
    if ($type == 'radio') { 
     if ($positive == $value) { 
      $bool = 'CHECKED'; 
     } 
    } 

    if ($type == 'checkbox') { 
     if ($positive == $value) { 
      $bool = 'CHECKED'; 
     } 
    } 

    if ($type == 'select') { 
     if ($positive == $value) { 
      $bool = 'SELECTED'; 
     } 
    } 

    return $bool; 
} 

使用方法如下:

<select name="item_select"> 
    <?php 
    $query = "SELECT * FROM my_table ORDER BY name"; 
    $result = mysql_query($query); 
    while ($row = mysql_fetch_object($result)) { 
    ?> 
     <option value=<?php echo $row->id; ?> <?=checker('select', $row->id, $_POST['item_select'])?>> <?php echo $row->name; ?></option> 
     <?php }// end while?> 
    </select> 

如果你只需要做到这一次,然后这是矫枉过正,但你应该能够采取的原则,并将其应用到你的代码。

0

尝试以下操作:

<option value="<?php echo $row->id ?>" <?php echo $row->id == $_POST['item_select'] ? "selected='selected'" : "" ?> ><?php echo $row->name ?></option>