Здравствуйте ! Делаю форму с выпадающими списками, значения для которых берутся запросом из БД MySQL. Пользователь заполняет форму, нажимает отправить и форма выводится ещё раз(для проверки введенных данных) но уже с данными которые ввёл пользователь. С обычными полями всё нормально, но выпадающие списки сбрасывают свои значения . Выпадающий список имеет такой код: Код (Text): <? $sql = "SELECT * FROM `year` ORDER BY `id`"; $res = mysql_query($sql) or die( "Произошла ошибка : " . mysql_error()); echo "<select name=snowmobile_year ?>\r\n"; while($row = mysql_fetch_assoc($res)) { echo "<option value={$row['year']}>{$row['year']}</option>"; } echo "</select>\r\n"; ?> Подскажите как заставить его запоминать значения ?
учим html <option value='value' selected>text</option> как в нужный опшн selected воткнуть думаю сам догадаешся
про selected я знаю вы меня не совсем поняли значения берутся из БД а не записанны статично вот пример моего статичного списка ОН РАБОТАЕТ и сохраняет выбранное значение при перезагрузке страницы : Код (Text): <select name="year"> <option value="1984" <?php if (isset($_POST['update'] )&& ($_POST['year'] == '1984')) {echo "selected='selected'";}?>> 1984 </option> <option value="1985" <?php if (isset($_POST['update'] )&& ($_POST['year'] == '1985')) {echo "selected='selected'";}?>> 1985 </option> <option value="1986" <?php if (isset($_POST['update'] )&& ($_POST['year'] == '1986')) {echo "selected='selected'";}?>> 1986 </option> </select> А вот пример С ВЫБОРКОЙ ИЗ БД, который не могу заставить работать правильно , после перезагрузие страницы значение выпадающего списка сбрасывается Код (Text): <? $sql = "SELECT * FROM `year` ORDER BY `id`"; $res = mysql_query($sql) or die( "Произошла ошибка : " . mysql_error()); echo "<select name=year ?>\r\n"; while($row = mysql_fetch_assoc($res)) { echo "<option value={$row['year']}"; if (isset($_POST['update'] ))) { echo "selected " // ПРОБЛЕМА ЗДЕСЬ ; } echo ">{$row['year']}</option>"; } echo "</select>\r\n"; ?> Как правильно использовать строку Код (Text): echo "selected " ; , чтоб выбранное значение не сбрасывалось?
1. а головой подумать? 2. что значит перезагрузка страницы? отправка формы с загрузкой той-же страницы? 3. если пункт 2 === true, то видимо Код (Text): if($row['year'] == $_POST['year']) { // selected }
да. пункт 2 === true, но если делаю так Код (Text): <? $sql = "SELECT * FROM `year` ORDER BY `id`"; $res = mysql_query($sql) or die( "Произошла ошибка : " . mysql_error()); echo "<select name=year ?>\r\n"; while($row = mysql_fetch_assoc($res)) { echo "<option value={$row['year']}"; if($row['year'] == $_POST['year']) { echo " selected "; } echo " >{$row['year']}</option>"; } echo "</select>\r\n"; ?> Всё равно показывает первый пункт выпадающего списка По сути, 1- мы отправили запрос на выборку из БД, Код (Text): $sql = "SELECT * FROM `year` ORDER BY `id`"; $res = mysql_query($sql) or die( "Произошла ошибка : " . mysql_error()); 2- потом организуем последовательный вывод списка , пока у нас не закончится массив значений, Код (Text): echo "<select name=year ?>\r\n"; while($row = mysql_fetch_assoc($res)) { echo "<option value={$row['year']}"; ...................................................... echo " >{$row['year']}</option>"; } echo "</select>\r\n"; ?> 3 -попутно в цикле while мы проверяем каждый элемент на совпадение с переменной $_POST['year'] Код (Text): if($row['year'] == $_POST['year']) { echo " selected "; } и если они совпадают, то выводим метку selected Вроде всё верно, но неработает
для начала глянь исходник сгенерёного html. есть ли там вообще слово selected. если нет, то смотрим, что имеем в: Код (Text): if($_SERVER['REQUEST_METHOD'] == 'POST') die ($_POST['year']); обновление инфы и выдача страницы делается в один заход, или после обновления идёт редирект назад на форму?
Ура заработало просто в выражении Код (Text): if($row['year'] == $_POST['year']) была пропущенна буква и поэтому не происходило сравнение SDR спасибо за помошь !!!