Использование PHP $ _POST для запоминания опции в поле выбора?

У меня есть форма, которая 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']; ?>" > 

благодаря

Related of "Использование PHP $ _POST для запоминания опции в поле выбора?"

Ты почти понял это. Вам необходимо установить атрибут 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>