0

こんにちは$_POST['id']、href をクリックした後、select タグから値が失われるという問題があります。さて、コードはここにあります:

$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にクエリパラメータとして保存します(他の回答にリストされています)
  • クッキーに保存する
  • セッションに保存する

そしてそれがより長い期間保存される必要があるならば

  • DBに保存する

一度だけ必要な場合は、クエリパラメータで問題ありません。数回のクリック/ページフローの場合は、どこかより長続きすることが適切です。

于 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 に答える