2013-06-18 7 views
4

У меня есть форма, которая получает от пользователя минимальный размер и максимальный размер обуви и печатает на той же странице методом POST все туфли с этим диапазоном размеров.Вспоминая выбранную опцию после обновления страницы

Действие формы ведет к одной и той же странице, поэтому страница обновляется и получает новые значения для переменных POST.

Моя проблема заключается в том, что выбрать опцию по умолчанию (например)

<option value="49.0" selected="selected">49.0</option> 

по-прежнему выбран, конечно, после того, как страница обновилась так печатает результаты для размера X, но вариант, который выбран 49,0

Мой вопрос в том, как изменить параметр по умолчанию на тот, который пользователь выбрал до того, как он отправил форму или, другими словами, в $ _POST ['minSize'] и $ _POST ['maxSize']

+2

Ваше решение содержится в cookies. – SaidbakR

+0

Является ли ваш список опций жестко закодированным или генерируется с помощью цикла PHP? – j08691

+0

Это жесткий код. –

ответ

4

Вы можете использовать JavaScript для этого:

<script type="text/javascript"> 
    document.getElementById('idofselectlist').value = "<?php echo $_POST['minSize'];?>"; 
</script> 

И

<script type="text/javascript"> 
    document.getElementById('idofselectlist').value = "<?php echo $_POST['maxSize'];?>"; 
</script> 
+1

Спасибо! работает. Я приму свой ответ после того, как пройдет время ожидания. –

1

Если у вас уже есть значения в массиве POST, то вы можете просто построить форму вход с встроенным PHP вторя из значения, которое пользователь выбрал. Вы можете поместить условное значение в верхнюю часть страницы, которая устанавливает значения по умолчанию, если POST не был установлен.

//check if max size is set via post 
if(!isset($_POST['maxsize'])){ 
    $maxSize = 10; 
}else{ 
    $maxSize = $_POST['maxsize']; 
} 

//check if min size is set via post 
if(!isset($_POST['maxsize'])){ 
    $minSize= 1; 
}else{ 
    $maxSize = $_POST['minsize']; 
} 

затем встраивать с HTML, используйте этот

<form action="form_handle.php"> 
    Min shoe size: <input type="text" name="min" value="<?=$minSize; ?>"><br> 
    Max shoe size: <input type="text" name="max" value="<?=$maxSize; ?>"><br> 
    <input type="submit" value="Submit form"> 
</form> 

Я использую сокращенную <?="hello" ?> который является таким же, как <?php echo "hello" ?>

+0

Спасибо за подробный повтор, это правильно и работает. Другой ответ был отправлен перед вашим, поэтому я соглашусь с ним. Еще раз, спасибо. –

+1

без проблем. использование встроенных php для создания форм может быть простым и легким способом создания страницы динамически – ejfrancis

1

Это не самый элегантный, но он работает

<?php if(isset($_POST['min'])) $selected = true; ?> 
<form action="test.php" method="POST"> 
<select name="min"> 
    <option value="49.0" <?php if(isset($selected) && $selected && $_POST['min']=='49.0') echo 'selected="selected"'?>>49.0</option> 
    <option value="48.0" <?php if(isset($selected) && $selected && $_POST['min']=='48.0') echo 'selected="selected"'?>>48.0</option> 
    <option value="47.0" <?php if(isset($selected) && $selected && $_POST['min']=='47.0') echo 'selected="selected"'?>>47.0</option> 
    <option value="46.0" <?php if(isset($selected) && $selected && $_POST['min']=='46.0') echo 'selected="selected"'?>>46.0</option> 
    <option value="45.0" <?php if(isset($selected) && $selected && $_POST['min']=='45.0') echo 'selected="selected"'?>>45.0</option> 
</select> 
<input type="submit" value="Press"> 
</form> 
0

Это генерирует <option></option> элементы и добавляет «выбранный», если это тот, который должен быть. Это не позволяет вам использовать javascript, который ваши клиенты могут заблокировать.

$minSize = (isset($_REQUEST['minSize'])) ? $_REQUEST['minSize'] : 10; 
$maxSize = (isset($_REQUEST['maxSize'])) ? $_REQUEST['maxSize'] : 50; 

echo "<select name=\"minSize\">\n"; 
for ($i=10;$i<=50;i++) 
{ 
    echo "\t<option value=\"".$i."\"".(($i==$minSize) ? " selected" : "").">".$i."</option>\n"; 
} 
echo "</select>\n<select name=\"maxSize\">\n"; 
for ($i=10;$i<=50;i++) 
{ 
    echo "\t<option value=\"".$i."\"".(($i==$maxSize) ? " selected" : "").">".$i."</option>\n"; 
} 
echo "</select>\n"; 

?> 
Смежные вопросы