在表单上添加新表时保留上一个

时间:2009-10-26 02:39:02

标签: php html

我有这个表单附带来自另一个页面的一些参数。我想保留这些值并添加sortby参数,但每次我点击提交时,所有参数都会消失,但是新的sortby参数。

如何保留上一页的参数,只添加或更改orderby参数。

<form name="formSearch" action="<?php echo $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']; ?>"  method="GET">
    <select name="order_by" id="order_by">
        <option <?php if( isset($_REQUEST['order_by']) && $_REQUEST['order_by'] == 1) { echo "selected"; } ?> value="1">Ultima Modificacion (Reciente)</option>
        <option <?php if( isset($_REQUEST['order_by']) && $_REQUEST['order_by'] == 2) { echo "selected"; } ?> value="2">Ultima Modificacion (Viejo)</option>
        <option <?php if( isset($_REQUEST['order_by']) && $_REQUEST['order_by'] == 3) { echo "selected"; } ?> value="3">Precio (Mayor to Menor)</option>
        <option <?php if( isset($_REQUEST['order_by']) && $_REQUEST['order_by'] == 4) { echo "selected"; } ?> value="4">Precio (Menor to Mayor)</option>
        <option <?php if( isset($_REQUEST['order_by']) && $_REQUEST['order_by'] == 5) { echo "selected"; } ?> value="5">Marca/Modelo (A to Z)</option>
        <option <?php if( isset($_REQUEST['order_by']) && $_REQUEST['order_by'] == 6) { echo "selected"; } ?> value="6">Marca/Modelo (Z to A)</option>
    </select>
    <input name="submit" type="submit" />
</form>

3 个答案:

答案 0 :(得分:1)

添加

<INPUT type='hidden' name='OPT1' VALUE='<?php if( isset($_REQUEST['OPT1'])) { echo $_REQUEST['OPT1']; } else { echo "" } ?>

因为你需要将它们作为隐藏的输入字段传递。

OPT1是要保留的参数的名称 - 添加尽可能多的参数

如果您希望实际显示字段/值,则:

  • 删除type='hidden'以显示它们并可编辑

  • 禁用输入字段以显示它们,不可编辑。

然而,这两个选项需要干净利落,例如:如果旧值来自单选按钮,则需要显示并预先填充相同的单选按钮设置等...

答案 1 :(得分:0)

如果你使用方法“GET”似乎是“形式”的工作方式,那么,如果我需要保留值并需要使用“GET”,我需要添加一堆隐藏的字段,如它有人建议。但我试图避免这种情况。如果有人知道更好的方法,请告诉我,如果不是这将是一个解决方案:

“method =”GET“&gt;

$ V){    echo''。“\ n”; } ?&GT;

现在,如果您不需要在结果表单中使用“GET”,只需将方法更改为“POST”即可正常工作。

请注意,如果您来自其他表单,则该表单需要“GET”才能生效。

搜索页面 - &gt;使用Get 结果页面w /排序表单 - &gt;使用帖子

答案 2 :(得分:-1)

保留数据的最简单方法是确保负责填充相关值的字段出现在当前页面上。如果相关页面上的用户不再可见,则可以将其设置为<input type="hidden" name=fieldname" value="value_set_on_previous_submit"/>。或者,如果它们仍然显示,只需确保将它们的值设置为已提交的值。