首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在页面刷新时保存选中的值?

在页面刷新时保存选中的值?
EN

Stack Overflow用户
提问于 2013-08-07 23:22:01
回答 4查看 3.1K关注 0票数 0

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

然而,我对待这一点的方式是不同的,没有数据库,所以一些洞察力将是伟大的。

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

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

表单片段:

代码语言:javascript
复制
<input name="sharks" type="hidden" value="0">
<input name="sharks" type="checkbox" value="1" id="sharks" '.$VALUE ? ' checked="checked"' : ''.'>

该输入的php部分不稳定,Id想问值是0还是1,如果它是1,则检查它的0,如果它是0,则为空。

从数据库中获得它会更容易,但不太确定,因为没有数据库,我猜cookie会到位。

抱歉,如果这最后一部分不稳定,但我有点不确定,不知道去哪里找。

使用会话的

代码语言:javascript
复制
session_start();
if(isset($_POST['submit'])) {
   if(isset($_POST['personalization_result'])) {   
    $_SESSION['value'] = $_POST['personalization_result']; } 
   else {
    $_SESSION['value'] = '';  
   }
} 

表单

代码语言:javascript
复制
<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>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-07 23:34:11

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

代码语言:javascript
复制
<?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,以避免未定义的变量通知。现在,设定部分看起来很健壮。

票数 1
EN

Stack Overflow用户

发布于 2013-08-07 23:26:49

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

对于cookies,请看一下setcookie (http://www.php.net/setcookie)

会议:http://php.net/manual/en/book.session.php

票数 1
EN

Stack Overflow用户

发布于 2013-08-07 23:27:31

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

下面是一个很好的教程:

webstorage.asp

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18115408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档