HTML Выберите форму Сохранить выпадающие значения PHP - PullRequest
0 голосов
/ 26 марта 2012

Скажем, у меня есть форма, которая содержит раскрывающийся список, заполненный значениями, хранящимися в моей базе данных:

<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)

Ответы [ 3 ]

2 голосов
/ 26 марта 2012

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

<option value="<?php echo $row->id ?>" <?php echo $row->id == $_POST['item_select'] ? 'selected' : '' ?> ><?php echo $row->name ?></option>
1 голос
/ 26 марта 2012

Лично у меня есть функция, которая делает все это для вас для выбора, флажка и радиовходов. Но только если вам нужно сделать это несколько раз. Например:

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 голосов
/ 26 марта 2012

Попробуйте следующее:

<option value="<?php echo $row->id ?>" <?php echo $row->id == $_POST['item_select'] ? "selected='selected'" : "" ?> ><?php echo $row->name ?></option>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...