1

チェックボックスのあるフォームがあります。ユーザーが最初にページにアクセスしたときに、チェックボックスを「チェック」したいと思います。ただし、ボックスのチェックを外してからページを送信する場合は、チェックを外したままにしておきます (チェックを入れてページを送信する場合は、チェックを入れたままにしておきます)。

いつチェックされ、フォームが送信されたかを判断するために、私は現在次のことを行っています。

<input type='checkbox' class='seeAll' name='seeAll' value='true' <?php if ($_POST['seeAll'] == 'true') echo checked; ?>>

これは、必要なときにチェックボックスをオンのままにしておくのに最適ですが、そのように送信した場合はチェックを外したままにし、ページに再度アクセスした場合 (URL を再入力するなど) もチェックされるようにするにはどうすればよいでしょうか?

ありがとう!

4

3 に答える 3

2

この答えを思いつくのになぜそんなに時間がかかったのかわかりませんが、これに苦労した後、$_POST以前同じように を介してチェックボックスの値を確認し、ユーザーが到着したかどうかを確認できることに気付きましたこれを行うことにより、送信ボタン以外の何らかの方法でページに:

<?php if(($_POST['seeAll'] == 'true') || !isset($_POST['submit'])) echo checked; ?>

ユーザーがフォームを送信した場合はisset($_POST['submit'])true になるため、その場合で空の場合 $_POST['seeAll']、明らかにユーザーがチェックされていないボックスを送信したことになります。false の場合isset($_POST['submit'])、ユーザーはフォームを送信せずにページに到着したため、チェックボックスを「デフォルト」としてチェックする必要があります。

したがって、タグ全体<input>は次のようになります。

<input type='checkbox' class='seeAll' name='seeAll' value='true' <?php if(($_POST['seeAll'] == 'true') || !isset($_POST['submit'])) echo checked; ?>>

必要なだけ機能します!

于 2013-01-25T15:07:58.310 に答える
0

1 つの解決策は、 と の両方を使用すること$_SESSION[""]です$_POST[""]。(以下の説明とコードを参照してください)

説明

  1. $_SESSION["loadcount"]設定されていない場合は、0 に設定します。
  2. ごとに、 +1ずつif (isset($_POST["submit"]増加します。$_SESSION["load count"]
  3. input type="checkbox" の 'checked' オプションで、PHP をエコーし​​ます。if ($_SESSION["loadcount"] == 0)「チェック済み」をエコーする場合。(チェックボックスを最初にチェックされた状態に設定します。)
  4. それ以外の場合は、(isset($_POST["agree"]'checked' をエコーすると、ユーザーがチェックした状態を記憶します。(ユーザーが設定したチェック状態を覚えておいてください。

コード

<?php
session_start();
?>
<!DOCTYPE html>
<html>
    <body>
        <?php  // session_firstload.php

            // Check if $_SESSION is not set, set $_SESSION loadcount to 0
            if (!isset($_SESSION["loadcount"])) 
                $_SESSION["loadcount"] = 0;

            // When the user submits using POST Method
            if (isset($_POST["submit"]))
            {
                // Increase $_SESSION["loadcount"] by +1
                $_SESSION["loadcount"] = $_SESSION["loadcount"] + 1;
            }

            // Echoing for Debugging / Understanding
            echo $_SESSION["loadcount"];
        ?>

        <form action="session_firstload.php" method="post">
            <input id="agree" type="checkbox" name="agree" 
            <?php 
                // If Check the Checkbox is $_SESSION["loadcount"] == 0
                // Else 'remember' with (isset($_POST["agree"]
                if ($_SESSION["loadcount"] == 0) 
                        echo "checked";
                    else
                    {
                        if (isset($_POST["agree"]))
                            echo "checked";
                    }
            ?>
            >I Agree<br>
            <input type="submit" name="submit">
        </form>
    </body>
</html>
于 2015-11-10T16:58:55.670 に答える
0

注:: これは OP の質問とは異なります。ユーザーがページから離れて (たとえば、www.facebook.com に)、ページに戻った場合でも、チェックボックスの値が記憶されるためです。OPは、ページが投稿されたときのチェックボックスの値のみを記憶することを望んでいました.

非永続的な方法が必要な場合は、 $_SESSION を使用できます。

<?php
    if (!isset($_SESSION)) {
        session_start();
    }   

    if ($_POST['seeAll'] == 'true' || !isset($_SESSION['seeAll'])) {
        $_SESSION['seeAll'] = true;
    } else {
        $_SESSION['seeAll'] = false;
    }
?>


<form method="POST">
    <input type='checkbox' class='seeAll' name='seeAll' value='true' 
        <?php if ($_SESSION['seeAll']) echo 'checked'; ?>
    />
    <input type='submit'/>
</form>

参照: http://php.net/manual/en/session.examples.basic.php

于 2013-01-24T21:33:05.610 に答える