0

您好,我有一个问题,我$_POST['id']在单击 href 后从选择标签中失去了价值。那么代码在这里:

$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值消失后......按下任何链接后如何保持该值?

4

2 回答 2

1

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

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

如果它需要储存更长的时间

如果只需要一次,查询参数应该没问题。如果对于几次点击/页面流,更持久的地方将是合适的。

于 2012-11-08T14:35:36.527 回答
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'];
}
于 2012-11-08T14:36:53.187 回答