Как сделать, чтобы элементы формы «запоминали» выделение? - PullRequest
2 голосов
/ 16 октября 2010

Я сейчас использую php для создания страницы "изменить объявления".

Я использую Mysql в качестве базы данных.

В настоящее время я использую PHP для извлечения всей информации mysql о засекреченных, а затем вывожу ее так:

  $table.="
   <select name='year' id='year'>
     <option id='2000' value='2000'>2000</option>
     <option id='2001' value='2001'>2001</option>
     <option id='2002' value='2002'>2002</option>
   </select>";

   echo $table;

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

Я знаю о input type = "text" , где вы можете просто сделать что-то вроде этого:

   <input type="text" name="text" value="<?php echo $_POST['text'];?>">

а как насчет выбора? Радиоприемники? и т.д.

Что мне здесь делать?

Спасибо

Ответы [ 5 ]

2 голосов
/ 16 октября 2010

Для атрибута selected можно установить значение "selected", чтобы сделать его текущим выбором по умолчанию:

<option id="2000" value="2000" selected="selected">2000</option>

php пример:

$options = array( '2000' => '2000', '2001' => '2001', '2002' => '2002' );
$selected = '2001';
$select = '<select name="year" id="year">';

foreach ( $options as $key => $value )
{
    $select .= '  <option value="' . $key . ( $key == $selected ? '" selected="selected">' : '">' ) . $value . '</option>';
}

$select .= '</select>';
2 голосов
/ 16 октября 2010
<option 
  id='2000'
  value='2000'
  <?php if(isset($year) && $year === '2000') echo 'selected="selected"'?>
>2000</option>

Где $year содержит год, откуда. Это предполагает, что $year является строкой. Если $year является целым числом, измените условие на:

  if(isset($year) && $year === 2000)

Для переключателей и флажков просто замените selected="selected" на checked="checked".

1 голос
/ 16 октября 2010

Для выбора, это немного более интенсивно, вам нужно циклически просмотреть данные и проверить, равно ли значение выбранному значению (по крайней мере, это проще всего сделать).Но вы можете применить аналогичную технику, как показано с флажком / радио.

<input type="radio" name="radio1" value="1" <?php echo (!empty($_POST['radio1']))?'checked':''?>> 
<input type="checkbox" name="chkbox1" value="1" <?php echo (!empty($_POST['chkbox1']))?'checked':''?>>

Поскольку вы создаете сторону PHP для таблицы, вот код:

  $years = array('2000', '2001', '2002');

  $table .= "<select name='year' id='year'>";
  foreach ($years as $year) {
      $table .= "<option id='" . $year . "' value='" . $year . "' " . 
            (($_POST['year'] == $year)?'selected':'') . ">" . $year . "</option>\n";
  }

  $table.="</select>";

Должен помочь вам выбрать правильный оператор.?и: составляют троичный оператор, который является сокращенным оператором if / else.

1 голос
/ 16 октября 2010

Вы можете условно повторить selected в PHP, в зависимости от значения, которое нужно выбрать.

0 голосов
/ 16 октября 2010
<?php

$selected[$_GET['year']] = "selected='selected'";

$table.="
 <select name='year' id='year'>
   <option id='2000' value='2000' " . $selected['2000'] . ">2000</option>
   <option id='2001' value='2001' " . $selected['2001'] . ">2001</option>
   <option id='2002' value='2002' " . $selected['2002'] . ">2002</option>
 </select>";

echo $table;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...