Php 是否在页面刷新时保存选中的值?

Php 是否在页面刷新时保存选中的值?,php,forms,session,Php,Forms,Session,我用ajax和php保存表单数据,重用数据库中的数据 然而,我处理这个问题的方式不同,因为没有数据库,所以一些见解将是非常好的 我正在通过电子邮件发送表单数据,所有数据都只是简单的复选框,值要么是0要么是1。当用户刷新页面id时,希望保留选中的值 我想如果没有数据库,我就需要使用cookie,而避免cookie的唯一方法就是ajax和数据库(严格地说是我的逻辑,不确定是否正确),这就是为什么我要问,我只想要一个简单的解决方案 表单片段: <input name="sharks" type=

我用ajax和php保存表单数据,重用数据库中的数据

然而,我处理这个问题的方式不同,因为没有数据库,所以一些见解将是非常好的

我正在通过电子邮件发送表单数据,所有数据都只是简单的复选框,值要么是
0
要么是
1
。当用户刷新页面id时,希望保留选中的值

我想如果没有数据库,我就需要使用cookie,而避免cookie的唯一方法就是ajax和数据库(严格地说是我的逻辑,不确定是否正确),这就是为什么我要问,我只想要一个简单的解决方案

表单片段:

<input name="sharks" type="hidden" value="0">
<input name="sharks" type="checkbox" value="1" id="sharks" '.$VALUE ? ' checked="checked"' : ''.'>
session_start();
if(isset($_POST['submit'])) {
   if(isset($_POST['personalization_result'])) {   
    $_SESSION['value'] = $_POST['personalization_result']; } 
   else {
    $_SESSION['value'] = '';  
   }
} 
表格

<form action="<?php the_permalink(); ?>" method="post" id="question-form"> 

  <input type="hidden" name="submit" value="1">

       <?php 

             if ($_SESSION['value'] == 1) {
              $checked = 'checked="checked"'; } 

        ?>  

 <li>   
 <input name="personalization_result[memory_0]" type="hidden"   value="0">
 <input name="personalization_result[memory_0]" type="checkbox" value="1" id="personalization_result_memory_0" <?php $checked ?> >
 </li>

 <li>   
 <input name="personalization_result[memory_1]" type="hidden"   value="0">
 <input name="personalization_result[memory_1]" type="checkbox" value="1" id="personalization_result_memory_1" <?php $checked ?> >
 </li>

 <li>   
 <input name="personalization_result[memory_2]" type="hidden"   value="0">
 <input name="personalization_result[memory_2]" type="checkbox" value="1" id="personalization_result_memory_2" <?php $checked ?> >
 </li>

您可以使用会话或cookie。基本上,您将使用
$\u COOKIE
$\u会话
进行访问。我宁愿说这比使用数据库更容易

有关cookie,请查看
setcookie
()


对于会话:

我会使用本地存储或会话存储,这是一个客户端内存存储位置,即使页面刷新,它也会保持不变,并集成到html5中

下面是一个很好的教程:


此代码将数据存储在会话中:

<?php
session_start();
if(isset($_POST['submit']))
{
    if(isset($_POST['sharks']))
    {
        $_SESSION['value'] = $_POST['sharks'];
    }
    else
    {
        $_SESSION['value'] = '';
    }
}
?>
<form action="" method="POST">
<?php
print '<input name="sharks" type="checkbox" value="1" id="sharks" ';
if ($_SESSION['value'] == 1)
{
    print ' checked="checked"';
}

print ">";
?>
<br>
<input type="submit" name="submit" value="Save" />
</form>


在我关闭并再次打开浏览器后,保持复选框处于选中状态。在一些测试之后,我添加了一个相当复杂的
if
,以避免未定义的变量通知。现在,设置部分看起来很健壮。


<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8">
        <title>Persist checkboxes 1</title>
        <script>
            window.jQuery || document.write("<script src='jquery-.1.1.js'><\/script>");
        </script>
        <script>
            $(document).ready(function()
            {
                $('#me').click(function()
                {

                    var seloption = $('input[type="checkbox"]:checked');
                    if (seloption.length > 0)
                    {
                        var abc = seloption.length + "checked \n";
                        //alert(abc);
                        i = 0;
                        seloption.each(function()
                        {
                            abc = abc + $(this).text(seloption[i]) + "<br>";
                        }

                        );
                        $('#msg').html(abc);
                    }
                }
                );
            }
            );
        </script>
    </head>
    <body>
        <div>
            <label for="option1">Option 1</label>
            <input type="checkbox" id="option1">
        </div>
        <div>
            <label for="option2">Option 2</label>
            <input type="checkbox" id="option2">
        </div>
        <div>
            <label for="option3">Option 3</label>
            <input type="checkbox" id="option3">
        </div>
        <div>
            <label for="option4">Option 4</label>
            <input type="checkbox" id="option4">
        </div>
        <div>
            <label for="option5">Option 5</label>
            <input type="checkbox" id="option5">
        </div>
        <div>
            <label for="option6">Option 6</label>
            <input type="checkbox" id="option6">
        </div>
        <div>
            <label for="option7">Option 7</label>
            <input type="checkbox" id="option7">
        </div>
        <div>
            <label for="option8">Option 8</label>
            <input type="checkbox" id="option8">
        </div>
        <div>
            <label for="option9">Option 9</label>
            <input type="checkbox" id="option9">
        </div>
        <button type="button" id="me">Submit</button>
        <div id="msg">



        </div>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script src="http://cdn.jsdelivr.net/jquery.cookie/1.4.0/jquery.cookie.min.js"></script>

        <script>
            $(":checkbox").on("change", function() {
                var checkboxValues = {};
                $(":checkbox").each(function() {

                    checkboxValues[this.id] = this.checked;

                });
                $.cookie('checkboxValues', checkboxValues, {expires: 1, path: '/'});


            });

            function repopulateCheckboxes() {
                var checkboxValues = $.cookie('checkboxValues');

                if (checkboxValues) {
                    Object.keys(checkboxValues).forEach(function(element) {
                        var checked = checkboxValues[element];
                        $("#" + element).prop('checked', checked);

                    });
                }
            }

            $.cookie.json = true;

            repopulateCheckboxes();
        </script>  
    </body>
</html>
保留复选框1 window.jQuery | | document.write(“”); $(文档).ready(函数() { $('#me')。单击(函数() { var selpoption=$('input[type=“checkbox”]:checked'); 如果(seloption.length>0) { var abc=selpoption.length+“选中\n”; //警报(abc); i=0; seloption.each(函数() { abc=abc+$(this).text(选择选项[i])+“
”; } ); $('#msg').html(abc); } } ); } ); 选择1 选择2 选择3 选择4 备选案文5 备选案文6 备选案文7 备选案文8 备选案文9 提交 $(“:复选框”)。在(“更改”,函数()上{ var checkboxValues={}; $(“:复选框”)。每个(函数(){ checkboxValues[this.id]=this.checked; }); $.cookie('checkboxValues',checkboxValues,{expires:1,path:'/'}); }); 函数重新填充TechEckBox(){ var checkboxValues=$.cookie('checkboxValues'); 如果(复选框值){ key(checkboxValues).forEach(函数(元素){ var checked=复选框值[元素]; $(“#”+元素).prop('checked',checked); }); } } $.cookie.json=true; 重新填充TechEckBox();
您可以将
$\u POST
保存在
$\u SESSION
页面顶部的
$\u SESSION['vals']=$\u POST是的,我完全打赌这比数据库容易,但因为我从未尝试过用cookies保存数据,而且有数据库经验,显然基于我所知道的,数据库方法会更容易,但我会仔细阅读这些链接,并绞尽脑汁,谢谢。@MichaelJosephAubry我保证这很容易。对于COOKIE,使用
setcookie
并使用
$\u COOKIE
检索。对于会话,您将使用
session\u start()
$\u session
来设置/获取值。我更喜欢使用会话而不是Cookie。好吧,我会看一看,我一直听说localstorage它似乎很受欢迎我在使用localstorage时发现了一些信息,只是看了一下,似乎有点多,再次我只是看了一下,让我读一下w3schoolsIt真的很简单,它基本上只是一个关联数组变量,在刷新之间预定义并记住。它有点像php的$\u会话变量,只是它只是客户端变量。对HTML5存储有更好的解释。是的,这是我注意到的另一件事,我意识到为什么它非常流行它是网络的未来,与HTML5这样的新技术相关,所以它肯定是一项必须具备的技能。谢谢,我希望有人能发布一个片段。。。这就是我所需要的(编写if-isset-submit),它将很好地处理所有数据,我知道你会用数据库来处理这些数据,我现在知道你也可以在这个isset中编写会话,这很好thanks@MichaelJosephAubry实际上,所有会话数据都存储在磁盘上的一个简单数据库中。我对代码进行了一些修改,它不起作用,我在OP中发布了我所拥有的,希望你能看到我做错了什么,但基本上我试图将
if($\u SESSION)
存储在一个变量中。我按照你的方式运行代码并使其起作用,但与我的代码id配合,我希望将if值=1的结果存储在一个变量中,我不想为每个输入运行if语句field@MichaelJosephAubry创建一个名称数组并在数组中循环,检查
if(isset($\u POST[$var\u name]))