У меня есть форма, которая POSTs на его листе, чтобы пользователь мог делать то, что вы нашли бы в корзине покупок.
например, Увеличить количество, выберите тип почтовой рассылки.
Моя проблема заключается в моей форме. Выберите элемент, называемый «почтовые расходы», когда форма перезагружается, он забывает, что было выбрано.
Все мои другие поля помнят их значения, используя это:
<input type="text" name="postcode" value="<?php echo $_POST['postcode']; ?> " />
Как использовать значение $ _POST для автоматического выбора опции в поле выбора, которое было сделано пользователем?
Я попробовал это:
<select name="postage" selected="<?php echo $_POST['postage']; ?>" >
и это
<select name="postage" value="<?php echo $_POST['postage']; ?>" >
благодаря
Ты почти понял это. Вам необходимо установить атрибут selected="selected"
(точная форма, которая вам нужна технически, зависит от вашего документа HTML, но это безопасное значение по умолчанию) в элементе <option>
тогда и только тогда, когда значение $postage
равно значению элемент. Так:
<select name="postage"> <option value="foo" <?php if ($_POST['postage'] == "foo") echo 'selected="selected" '; ?> > </select>
Обратите внимание, что это нарушает принцип DRY, потому что у вас теперь есть две строки строки "foo"
, поэтому он является основным кандидатом на рефакторинг. Хорошим подходом было бы сохранить пары значений / текста в массиве и перебрать его с помощью foreach
для создания тегов <option>
.
Вам нужно пройти через все варианты.
Создайте массив со всеми вариантами раскрывающегося списка, пропустите его и сравните с тем, что хранится в сообщении.
НАПРИМЕР:
<?php $aDropd = array("apple","orange","banana"); echo "<select>"; foreach($aDropd as $sOption){ $sSel = ($sOption == $_POST['postage'])? "Selected='selected'":""; echo "<option $sSel>$sOption</option>"; } echo "</select>";
нет, он вообще не работает. Для этого вам нужно поставить какую-то петлю.
For Example : foreach($record => $values){ if($values == $_POST['postage']){ $selected = "selected='selected' "; }else{ $selected = ""; } } <input name="postage" value="1" <?=$selected?> >
Редакция:
if($_POST['postage'] == 1){ $selected1 = "selected='selected' "; }else if($_POST['postage'] == 2){ $selected2 = "selected='selected' "; } and so on.......... <select name="postage"> <option value="1" <?=$selected1;?> /> <option value="2" <?=$selected2;?> /> </select>
Я думаю, это может быть полезно для вас … вы можете спросить меня, если что-то еще нужно …
Благодарю.
Выбранное значение должно быть выбрано
<select name="postage" value="1" <?php echo (($_POST['postage'] == 1)?'selected="selected"':''); ?> >
Ваш синтаксис html неверен. Правильный способ написать html выглядит так:
<select> <option value ="<?php echo $_POST['postage']; ?>" selected="selected"></option> </select>
Вы также можете сделать это короче:
<select> <option value ="<?=$_POST['postage']; ?>" selected="selected"></option> </select>
<select name="foo"> <option value="1" <?php echo strcmp($_POST['foo'],"1")==0?"selected=\"selected\"":"" ?>>option1</option> <option value="2" <?php echo strcmp($_POST['foo'],"2")==0?"selected=\"selected\"":"" ?>>option2</option>