表单get方法在表单提交后删除url参数

时间:2014-01-11 18:10:45

标签: php forms get

我正在为我的脚本制作自定义数据过滤器。除1个过滤器外,一切正常。

我可以选择查看今天的所有数据,如果你去my-url.file.php?view = today

它知道今天必须获取所有数据。但是在日期过滤器旁边,我还有其他一些过滤器。哪个可以通过GET(表格)设置

一切正常但当我正在查看my-url.file.php?view=today并设置(例如)排序过滤器时,它会重定向到?p=5&limit=3&ordersort=orderdesc但它应该重定向到?p=5&**view=today**&limit=3&sortby=orderdesc

所以我想..好吧让我通过var设置动作并检查页面是否今天查看如果是这样的话......我将把视图放在网址中,否则不会......但是它仍然删除了这个VAR

最好的方法是什么?

<?php
if (isset($_GET['view']) && $_GET['view'] === 'today')
    {
        $action = "adminOrders.php?view=today";
    }
else 
    {
        $action = "adminOrders.php";
    }
?>
<form name="ordermanage" method="get" action="<?php echo $action; ?>">  
  <label>Show &nbsp;
    <select id="form-field-select-1" class="form-control" style="display: inline-block !important;width:100px !important" id="limit" name="limit" onchange="document.ordermanage.submit();">
      <option value="50"  <?php echo (Input::get('limit') == 50) ? 'selected="selected"' : ''; ?>>50</option>
      <option value="100" <?php echo (Input::get('limit') == 100) ? 'selected="selected"' : ''; ?>>100</option>
      <option value="200" <?php echo (Input::get('limit') == 200) ? 'selected="selected"' : ''; ?>>200</option>
      <option value="300" <?php echo (Input::get('limit') == 300) ? 'selected="selected"' : ''; ?>>300</option>
    </select> &nbsp;orders&nbsp;&nbsp;&nbsp;&nbsp;</label>

  <label>Sort by &nbsp;
    <select id="form-field-select-1" class="form-control" style="display: inline-block !important;width:200px !important" id="ordersort" name="ordersort" onchange="document.ordermanage.submit();">
      <option value="orderdesc"  <?php echo ($selectBoxVarSort === "orderdesc") ? 'selected="selected"' : ''; ?>>Ordernr high to low</option>
      <option value="orderasc" <?php echo ($selectBoxVarSort === "orderasc") ? 'selected="selected"' : ''; ?>>Ordernr low to high</option>
      <option value="pricedesc" <?php echo ($selectBoxVarSort === "pricedesc") ? 'selected="selected"' : ''; ?>>Price high to low</option>
      <option value="priceasc" <?php echo ($selectBoxVarSort === "priceasc") ? 'selected="selected"' : ''; ?>>Price low to high</option>
    </select>
  </label>
</form>

2 个答案:

答案 0 :(得分:6)

如果指定表单方法GET,则将覆盖操作中的参数。您可以使用隐藏的表单字段来解决此问题:

<form name="ordermanage" method="get" action="adminOrders.php">
<?php
if (isset($_GET['view']) && $_GET['view'] === 'today') {
    ?><input type="hidden" name="view" value="today" /><?php
}
?>
<label>Show &nbsp;

答案 1 :(得分:0)

您是否尝试将隐藏的输入添加到名称为“view”且值为“today”的表单中?