2012-06-27 1 views
0

Я работаю над кодировкой некоторой формы в PHP, и у меня все работает очень хорошо, когда включен JavaScript. Но из прошлого опыта и плохого опыта работы с другими сайтами не очень хорошо, когда JavaScript отключен, я думал, что буду уделять больше внимания этому текущему проекту.Как сохранить состояние сохранения раскрывающегося списка с отключенным JavaScript - PHP

Что касается input type="text" POST полей, это не проблема. Но для раскрывающегося я, вероятно, использую, я не могу заставить его упорствовать. Ну, я могу, но тогда выбор по умолчанию неверен. Вот код ...

Базовая выпадающий структура:

<select id="topic" name="topic"> 
    <option value="Select an option">Select an option</option> 
    <option value="Topic A">Topic A</option> 
    <option value="Topic B">Topic B</option> 
    <option value="Topic C">Topic C</option> 
</select> 

Я подумал, что если я смешан selected с данными POST, я мог бы заставить его работать так:

<select id="topic" name="topic"> 
    <option selected="selected" value="Select an option">Select an option</option> 
    <option value=""><?php echo $_POST['topic']; ?></option> 
    <option value="Topic A">Topic A</option> 
    <option value="Topic B">Topic B</option> 
    <option value="Topic C">Topic C</option> 
</select> 

Но это не сохраняется; он возвращается только к умолчанию, «Выберите параметр».

Попытка это не сработало:

<select id="topic" name="topic"> 
    <option value="Select an option">Select an option</option> 
    <option selected="selected" value=""><?php echo $_POST['topic']; ?></option> 
    <option value="Topic A">Topic A</option> 
    <option value="Topic B">Topic B</option> 
    <option value="Topic C">Topic C</option> 
</select> 

Она сохраняется, но не правильно по умолчанию. Запускается пустым (потому что POST еще не введен).

Я выполнил некоторые поисковые запросы Google и не нашел ничего полезного для такого рода вещей, поэтому я не уверен, куда идти дальше. Любые идеи/предложения?

спасибо, что заблаговременно!

+0

сохранить выбор пользователя в сеансе, проверить сеанс, чтобы установить этот вариант как выбранный. –

+0

Возможный дубликат [значение по умолчанию выпадающего списка на веб-странице] (http://stackoverflow.com/questions/4625373/default-value-of-dropdown-on-webpage) – wallyk

+0

Я проверю потенциальный дубликат. Спасибо – nicorellius

ответ

4

я обычно делаю что-то вроде следующего:

<select id="topic" name="topic"> 
<option value="Select an option">Select an option</option> 
<?php 
    $topics=Array("Topic A","Topic B","Topic C"); 
    foreach($topics as $topic){ 
     echo '<option value="'.$topic.'"'.($_POST['topic']==$topic?' selected="selected"':'').'>'.$topic.'</option>'; 
    } 
?> 
</select> 

Что это делает распечатать поле выбора так же, как вы описали, но он добавляет выбранный = «выбранный» атрибут вариант, который соответствует вашу переменную $ _POST.

+0

Спасибо за трюк. Мне нравится альтернативная версия синтаксиса. – nicorellius

+0

Один быстрый вопрос. Похоже, что хотя просмотр источника показывает ожидаемый результат, выпадающее меню, по-видимому, ведет себя странно, например, оно отображается пустым после неудачной проверки, или оно показывает элемент массива до того, как оно должно быть ... Любая идея, почему это может быть? – nicorellius

+1

Nevermind. Я понял. Я отделил утверждение if в альтернативном синтаксисе, чтобы лучше понять точный процесс, и я забыл добавить закрывающий тег ''. Приветствия. – nicorellius

1
<?php 
$topic=''; 
if isset($_POST) 
    if is_array($_POST) 
    if isset($_POST['topic']) 
     $topic=$_POST['topic']; 
?> 

<select id="topic" name="topic"> 
    <option value="Select an option">Select an option</option> 
    <option value="Topic A"<?php if($topic=='Topic A') echo ' selected="selected"'; ?>>Topic A</option> 
    <option value="Topic B"<?php if($topic=='Topic B') echo ' selected="selected"'; ?>>Topic B</option> 
    <option value="Topic C"<?php if($topic=='Topic C') echo ' selected="selected"'; ?>>Topic C</option> 
</select> 
Смежные вопросы