我有以下表格:
<div id="Quick_find_container">
<form action="" method="post" target="_self">
<div id="qcategory_1">Product</div>
<div id="qcategory">
<select name="Category" class="dropmenu" id="Category"onchange="this.form.submit()">
<option value="">Any</option>
<option value="Keyboard"<?php if ($_POST['Category']=="Keyboard") {echo "selected='selected'"; } ?>>Keyboard</option>
<option value="Piano"<?php if ($_POST['Category']=="Piano") {echo "selected='selected'"; } ?>>Piano</option>
</select>
</div>
<div id="qbrand_1">Brand</div>
<div id="qbrand"><select name='Manufacturer' onchange="this.form.submit()">
<?php
echo '<option value="">Any</option>';
$value = $_POST['Manufacturer'];
while ($row = mysql_fetch_array($RS_Search)) {
echo "<option value=" . $row['Manufacturer'] . " ' . (selected == $value ? ' selected' : '') . '>" . $row['Manufacturer'] . "</option>";
}
?>
</select>
</div>
<div id="qsubmit">
<input name="Search2" type="submit" id="Search2" value="Submit">
</div>
</form>
</div>
<?php echo $_POST['Category']; ?>
<?php echo $_POST['Manufacturer']; ?>
Echo post Category和Manufacturer纯粹是为了看它提交的内容。
我的问题是第二个下拉菜单。我希望在选择某些内容后显示所选值。目前,即使POST_ [制造商&#39;]的输出正确,它也会跳回到默认值Any。 有没有办法像第一个下拉菜单中那样显示所选值?我仍然希望保留值,以便从数据库中进行选择。但只显示所选值。
欢迎任何帮助
答案 0 :(得分:1)
你选择回答选项的行有很多引号问题。这将解决它:
while ($row = mysql_fetch_array($RS_Search)) {
$selected = $_POST['Manufacturer'] == $row['Manufacturer'] ? 'selected' : '';
echo '<option ' . $selected . ' value="' . htmlspecialchars($row['Manufacturer']) . '">' . htmlspecialchars($row['Manufacturer']) . '</option>';
}
附注:在将变量输出到HTML中以防止XSS时,请记住使用htmlspecialchars()
或类似内容。
答案 1 :(得分:0)
从理论上讲,你在那里的代码可能会工作,而我已经像这样做了
while ($row = mysql_fetch_array($RS_Search)) {
$selected = ($_POST['Manufacturer'] == $row['Manufacturer']) ? 'selected="selected":'';
echo '<option '.$selected.'>' . $row['Manufacturer'] . '</option>";
}?>
如果标签内有相同的内容,则不需要值。您还在标签中遗漏了一些引号。学习简化代码,以便更容易理解。