2012-03-26 3 views
0

Скажем, у меня есть форма, которая содержит выпадающий список заполняется значениями, сохраненными в базе данных:HTML Выбор формы Keep выпадающим значения 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 

Я выбрал ITEM2 и отправить форму, после того, как страница передает это еще

List: 
Item1 (selected) 
Item2 

Есть ли способ, чтобы раскрывающийся «помнить», какой элемент был выбран? Например, желаемый эффект после отправки формы для Item2 должен быть.

List: 
Item1 
Item2 (selected) 

ответ

2

Просто сравните занесены значение с текущим в течение цикла:

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

Ницца, именно то, что я искал. Еще раз спасибо! –

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> 
Смежные вопросы