Использование PHP $ _POST для запоминания опции в поле выбора? - PullRequest
1 голос
/ 19 декабря 2011

У меня есть форма, которая отправляет в itselft, чтобы пользователь мог делать вещи, которые вы найдете в корзине.

например. Увеличьте количество, выберите тип почтовой оплаты.

Моя проблема связана с моей формой. Выбирайте элемент под названием «почтовые расходы», когда форма перезагружается, она забывает, что было выбрано.

Все остальные мои поля запоминают свои значения, используя это:

<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']; ?>" >

Спасибо

Ответы [ 7 ]

7 голосов
/ 19 декабря 2011

Ты почти понял. Вам нужно установить атрибут selected="selected" (точная форма, которая вам необходима, технически зависит от вашего HTML-типа документа, но это безопасное значение по умолчанию) для элемента <option>, если и только если значение $postage равно значению элемент. Итак:

<select name="postage">
<option value="foo" 
    <?php if ($_POST['postage'] == "foo") echo 'selected="selected" '; ?>
 >
</select>

Обратите внимание, что это нарушает принцип DRY , потому что теперь у вас есть два вхождения строки "foo", так что это основной кандидат на рефакторинг. Хорошим подходом было бы сохранить пары «значение / текст» в массиве и перебрать его с помощью foreach, чтобы получить теги <option>.

2 голосов
/ 19 декабря 2011

Вам необходимо просмотреть все параметры.

Создать массив со всеми параметрами раскрывающегося списка, просмотреть его и сравнить с тем, что хранится в записи.

EG:

<?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>";
1 голос
/ 19 декабря 2011

нет, это вообще не работает .. для этого нужно поставить какую-то петлю.

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>

Я думаюэто может быть полезно для вас ... вы можете спросить меня, нужно ли что-нибудь еще ...

Спасибо.

0 голосов
/ 06 октября 2016
<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>

0 голосов
/ 09 февраля 2014

Вы также можете сделать его короче:

<select>
<option value ="<?=$_POST['postage']; ?>" selected="selected"></option>
</select>
0 голосов
/ 19 декабря 2011

Ваш синтаксис HTML неверен.Правильный способ написать HTML-код выглядит так:

<select>
<option value ="<?php echo $_POST['postage']; ?>" selected="selected"></option>
</select>
0 голосов
/ 19 декабря 2011

Должно быть выбрано значение выбранного

<select name="postage" value="1" <?php echo (($_POST['postage'] == 1)?'selected="selected"':''); ?> >
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...