как отправить форму со значением по умолчанию, используя get, если ничего не выбрано? - PullRequest
0 голосов
/ 02 декабря 2011

это моя форма:

$html = "";
$html .= "<div id='options'>";
$html .= "<form action='filter.php' method='get'>";
$html .= "<select multiple='multiple' name='options'>";
foreach($selectValues as $option){
    $html .= "<option value='$option'>$option</option>";
}
$html .= "</select><input type='submit' value='submit'></form></div>";

, но если я не выбираю опцию из поля и отправляю сообщение, я получаю сообщение об ошибке «Неопределенный индекс: опции», я хочу иметь возможность отправить и иметьон передает значение по умолчанию, если ничего не выбрано

Ответы [ 3 ]

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

Вы, вероятно, должны вместо этого исправить код в бэкэнде, чтобы выполнить проверку !empty($_GET['options']). Во-вторых, имя вашего поля должно быть options[], а не options, так как оно будет перезаписано с помощью командыпоследнее выбранное значение (из-за того, как PHP обрабатывает ввод).В-третьих, вы можете захотеть htmlspecialchars() ваш $option при выводе.Это гарантирует, что странные опции не нарушат ваш HTML.Наконец, если ваш параметр имеет то же значение, что и его метка, вам не нужно также указывать его в качестве значения.

0 голосов
/ 02 декабря 2011

Добавьте выбранный атрибут к одному из параметров, например так:

$html = "";
$html .= "<div id='options'>";
$html .= "<form action='filter.php' method='get'>";
$html .= "<select multiple='multiple' name='options'>";
foreach($selectValues as $option){
    $html .= "<option value='$option'" . ($option == 'my default option' ? ' selected="selected" : '') . ">$option</option>";
}
$html .= "</select><input type='submit' value='submit'></form></div>";

Это немедленно, если будет проверено, равен ли параметр «вашему варианту по умолчанию», и добавьте selected="selected" копция по умолчанию.

Однако это не сработает, если пользователь отменит выбор параметров.

Прежде чем пытаться использовать $ _GET ['options'], вы всегда должны проверять, определено ли оно с помощью isset.

0 голосов
/ 02 декабря 2011

Как насчет этого?

$html = "";
$html .= "<div id='options'>";
$html .= "<form action='filter.php' method='get'>";
$html .= "<select multiple='multiple' name='options'>";

$html .= "<option value='default'>Select An Option</option>";

foreach($selectValues as $option){
    $html .= "<option value='$option'>$option</option>";
}
$html .= "</select><input type='submit' value='submit'></form></div>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...