提交并单击链接后丢失选择值

时间:2012-11-08 14:33:16

标签: php html post

您好我在点击href后从select标签中丢失$_POST['id']值时遇到问题。那么代码就在这里:

$page = 1;
if (isset($_POST['id'])){
    $id = $_POST['id'];
}

echo $id[0];
?>

<ul>
    <li><a href="?show=all">Show All</a></li>
    <li><a href="?show=submitted">Show Submitted</a></li>
    <li><a href="?show=pending">Show Pending</a></li>
    <li><a href="?show=not">Show Not Submitted</a></li>
</ul>

<form action="" method="post">
    <select name="id">
        <option value="1">one</option>
        <option value="2">two</option>
        <option value="3">three</option>
        <option value="4">four</option>
        <option value="5">five</option>
        <option value="6">six</option>
        <option value="7">seven</option>
        <option value="8">eight</option>
    </select>
    <input type="submit" name="mode" value="Select" />
</form>

我的想法是,当我从选定字段中选择了一些值之后,我需要将该值保存在变量中,并且还需要进一步过滤在<a href="">之后有效的SQL查询。 在提交表单后的那一刻,我获得了选择值,但在进一步过滤后,按下任意<a href="">链接$_POST值消失...在按任何链接后如何保留该值?

2 个答案:

答案 0 :(得分:1)

将它保存在某个地方。您有这些选项,例如

  • 将其作为查询参数存储在所有网址上(在其他答案中列出)
  • 将其存储到cookie
  • 将其存储在session

如果需要存储更长时间

  • 将其存储在DB

如果您只需要一次,查询参数应该没问题。如果有几次点击/页面流,那么更合适的地方是合适的。

答案 1 :(得分:0)

链接点击始终生成GET请求,默认情况下不提交表单。因此,您必须将其作为查询参数传递:

    <li><a href="?show=all<?=isset($id) ? '&id=' . $id : '' ?>">Show All</a></li>
    <li><a href="?show=submitted<?=isset($id) ? '&id=' . $id : '' ?>">Show Submitted</a></li>
    <li><a href="?show=pending<?=isset($id) ? '&id=' . $id : '' ?>">Show Pending</a></li>
    <li><a href="?show=not<?=isset($id) ? '&id=' . $id : '' ?>">Show Not Submitted</a></li>

当然,在这种情况下,您需要从$_GET获取它。但是你可以从$_POST$_GET获得它,你可以在这里使用$_REQUEST

if (isset($_REQUEST['id'])){
    $id = $_REQUEST['id'];
}