在表单提交中添加额外的 GET 变量


Adding an additional GET variable on form submit

我有两个"表单",每个"表单"由一个下拉列表组成。我正在使用javascript提交两个表单onchange="this.form.submit()"我需要在第二个表单提交中保留一个变量(如果已设置)。我有表单提交到同一页面,目前,它没有传递第一个变量。

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="GET">
    <select name="show" style="width:100%;" onchange="this.form.submit()">
        <option value="cond" <?php if(isset($_GET['show'])&&$_GET['show']=='cond'||!isset($_GET['show'])) { echo 'selected'; } ?>>Condensed</option>
        <option value="full" <?php if(isset($_GET['show'])&&$_GET['show']=='full') { echo 'selected'; } ?>>Show All</option>
    </select>
</form>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="GET">
    <select name="sort_slsp" style="width:100%;" onchange="this.form.submit()">
    <option value="">--Choose Salesperson--</option>
            <?php
                $get_all_slsp = mysqli_query($lmcon, "SELECT * FROM slsps ORDER BY slsp_name");
                while($row = mysqli_fetch_array($get_all_slsp)) {
                    echo '<option value="' . $row['slsp_id'] . '">' . $row['slsp_name'] . '</option>';
                }
            ?>
    </select>
</form>

当表单methodGET时,浏览器会用它们从表单字段构造的新查询字符串覆盖通过 action 属性指定的 URL 中任何可能存在的查询字符串部分。

这里最简单的解决方案是将要作为隐藏输入字段提交的附加值添加到表单中:

<input type="hidden" name="foo" value="bar">

当你的第一个select字段有名称show,这可能是你想在这里传递的值(?),你会这样填写这个值属性,

value="<?php echo htmlspecialchars($_GET['show']); ?>"

(首先添加对该参数是否存在的检查,如果不存在,可能会输出默认值,我将留给您。