繁体   English   中英

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

[英]Lost select value after submitting and clicking on link

您好,我遇到的问题是,单击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>

这个想法是,当我从选定的字段中选择了某个值之后,我需要将该值保留在变量中,并且还需要进一步过滤SQL查询,该查询在<a href="">之后起作用。 在提交表单之后,我得到选择值,但是在进一步过滤后,按下<a href="">链接中的任何一个,就会消失$_POST值...按下任何链接后,如何保留该值?

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

  • 将其存储为所有URL上的查询参数(在其他答案中列出)
  • 将其存储到cookie中
  • 将其存储在会话中

并且如果需要存储更长的时间

如果只需要一次,则查询参数应该可以。 如果对于几次点击/页面流,更持久的位置是合适的。

链接单击始终产生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'];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM