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