下拉后POST后的PHP表单值

时间:2010-03-24 01:08:00

标签: php post

我有一个从数据库中提取“选定”值的表单 现在我希望用户编辑值 发送数据时,我想显示新值。

当我提交表格时,我总是得到“绿色”值? 我在这里做错了什么?

<?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 个答案:

答案 0 :(得分:2)

您的条件均使用||。设置帖子后,它们都评估为TRUE。如果查看HTML输出,每个选项都会显示selected='selected'

只需将$_POST['color']与指定的字符串进行比较。

答案 1 :(得分:0)

<option <?php echo (isset($_POST['color']) || $color == "red") ? 'selected="selected"' : ''; ?> value="red">red</option>

||是“或”运算符。如果设置了$_POST['color'](即表单已提交),则始终评估为true。你可能应该这样做

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

相反。忘记isset检查。