Значения формы PHP после POST в выпадающем списке - PullRequest
1 голос
/ 24 марта 2010

У меня есть форма с выбранными значениями, извлеченными из базы данных.
Теперь я хочу, чтобы пользователь изменил значения.
Когда данные отправляются, я хочу показать новые значения.

Когда я отправляю свою форму, я всегда получаю «зеленое» значение?
Что я тут не так делаю?

<?php
// pulled from db
$color = "blue";
// update
if (isset($_POST['Submit'])) {
    echo "write to db: " . $_POST['name'] . " + " . $_POST['color'];
}
?>

<html>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label for="name">Name:</label>
<input type="text" name="name" size="30" value="<?php echo (isset($_POST['name'])) ? $_POST['name'] : ""; ?>">
<br />
<label for="color">Color:</label>
<select name="color">
    <option <?php echo (isset($_POST['color']) || $color == "red") ? 'selected="selected"' : ''; ?> value="red">red</option>
    <option <?php echo (isset($_POST['color']) || $color == "blue") ? 'selected="selected"' : ''; ?> value="blue">blue</option>
    <option <?php echo (isset($_POST['color']) || $color == "green") ? 'selected="selected"' : ''; ?> value="green">green</option>
</select>
<br />
<input type="submit" name="Submit" value="Update">
</form>
</html>

Ответы [ 2 ]

2 голосов
/ 24 марта 2010

Все ваши условные выражения используют ||.Все они оцениваются как ИСТИНА, когда сообщение установлено.Если вы посмотрите на вывод HTML, каждая опция скажет selected='selected'.

Просто сравните $_POST['color'] с указанной строкой.

0 голосов
/ 24 марта 2010
<option <?php echo (isset($_POST['color']) || $color == "red") ? 'selected="selected"' : ''; ?> value="red">red</option>

|| - оператор «или». Если установлено $_POST['color'] (то есть форма была отправлена), это всегда будет иметь значение true. Вы, вероятно, должны просто сделать

$_POST['color'] == 'red'

Вместо этого. Забудьте isset чек.

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