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'])那么这将是真的,所以如果是这样并且 $_POST['seeAll']是空的,那么他们显然用户提交了一个未选中的框。如果isset($_POST['submit'])为 false,则用户在没有提交表单的情况下到达页面,我应该将复选框选中为“默认”。

那么我的整个<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

注意:: 这与 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 回答
0

一种解决方案是同时使用$_SESSION[""]$_POST[""]。(见下面的解释和代码

解释

  1. 如果$_SESSION["loadcount"]未设置,则将其设置为 0。
  2. if (isset($_POST["submit"]增加$_SESSION["load count"]1 个。
  3. 在输入 type="checkbox" 的 'checked' 选项中,回显 PHP。如果if ($_SESSION["loadcount"] == 0)回显“检查”。(将复选框设置为初始选中状态。)
  4. 否则,如果(isset($_POST["agree"]echo '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 回答