dongye6377 2014-04-10 15:06
浏览 42
已采纳

从下拉列表中保留动态选择的值,但仍可以在提交后查看列表

I have got the following form:

<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 and Manufacturer are purely to see what it is submitting.

My problem is the second drop down menu. I would like to display after something is selected what the selected value was. At the moment it just jumps back to the default value Any even though the out put of POST_[Manufacturer'] is correct. Is there a way to display the selected value like in the first drop down menu? I still would like to keep the values to choose from the database as well. But just display the selected value.

Any help welcome

  • 写回答

2条回答 默认 最新

  • douzhaxian1267 2014-04-10 15:11
    关注

    Your line that echos the option has a lot of problems with quotes. This will fix it:

    while ($row = mysql_fetch_array($RS_Search)) {
        $selected = $_POST['Manufacturer'] == $row['Manufacturer'] ? 'selected' : '';
        echo '<option ' . $selected . ' value="' . htmlspecialchars($row['Manufacturer']) . '">' . htmlspecialchars($row['Manufacturer']) . '</option>';
    }
    

    Side note: remember to use htmlspecialchars() or similar when outputting variables into HTML to prevent XSS.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 表达式必须是可修改的左值
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题