Php 如何在会话中存储复选框状态?
这是我的密码Php 如何在会话中存储复选框状态?,php,session,checkbox,Php,Session,Checkbox,这是我的密码 <table class='block'> <tr> <td> <input class='c1' type='checkbox' lid='checkbox1'> <label>checkbox1</label> </td> <td> <input class='c2' type='checkbox' lid
<table class='block'>
<tr>
<td>
<input class='c1' type='checkbox' lid='checkbox1'>
<label>checkbox1</label>
</td>
<td>
<input class='c2' type='checkbox' lid='checkbox2'>
<label>checkbox2</label>
</td>
<td>
<input class='c2' type='checkbox' lid='checkbox3'>
<label>checkbox3</label>
</td>
<td>
<input class='c2' type='checkbox' lid='checkbox4'>
<label>checkbox4</label>
</td>
<td>
<input class='c3' type='checkbox' lid='checkbox5'>
<label>checkbox5</label>
</td>
<td>
<input class='c3' type='checkbox' lid='checkbox6'>
<label>checkbox6</label>
</td>
</tr>
</table>
<script type='text/javascript'>
$('input[type=checkbox]').each(function (){
if (this.checked) {
var x = $(this).attr('lid');
}
});
</script>
<?php
if(!isset($_SESSION))
{
session_start();
}
if(!isset($_GET['x'])) $_GET['x'] = '';
$_SESSION['x'] = $_GET['x'];
?>
复选框1
复选框2
复选框3
复选框4
复选框5
复选框6
$('input[type=checkbox]')。每个(函数(){
如果(选中此项){
var x=$(this.attr('lid');
}
});
我想在会话中保存选定的复选框。因此,当我回到页面时,相同的复选框应该保持选中状态。在我看来,与其将它们保存到会话中,不如将它们保存到数据库中。当您回到同一页时,从数据库中检索值。我相信,这将是更容易和最好的方法 问题的解决方案 首先,您需要确定您的数据/复选框值是否保存到会话变量中。因为,在浏览了您的代码片段之后,我真的怀疑您的复选框值是否会保存在会话变量中 问题1:您没有使用GET方法将值存储到会话变量中
<?php
if(!isset($_SESSION))
{
session_start();
}
if(!isset($_GET['x'])) $_GET['x'] = '';
$_SESSION['x'] = $_GET['x']; // storing data using GET method
?>
<script type='text/javascript'>
$('input[type=checkbox]').each(function (){
if (this.checked) {
var x = $(this).attr('lid');
}
});
</script>
在您的
javascript
代码中,您没有提到任何会话变量,通过这些变量,您可以匹配前面选中的变量。好的,下面是一个使用会话尝试完成的工作示例
<?php
session_start();
if(isset($_GET['checkbox']))
{
$_SESSION[$_GET['checkbox'][0]] = isset($_SESSION[$_GET['checkbox'][0]]) ? +!($_SESSION[$_GET['checkbox'][0]]) : TRUE;
print_r($_SESSION[$_GET['checkbox'][0]]);
die;
}
?>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>
<body>
<table class='block'>
<tr>
<td>
<input class='c1' type='checkbox' lid='checkbox1' <?php echo (isset($_SESSION['checkbox1'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox1</label>
</td>
<td>
<input class='c2' type='checkbox' lid='checkbox2' <?php echo (isset($_SESSION['checkbox2'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox2</label>
</td>
<td>
<input class='c2' type='checkbox' lid='checkbox3' <?php echo (isset($_SESSION['checkbox3'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox3</label>
</td>
<td>
<input class='c2' type='checkbox' lid='checkbox4' <?php echo (isset($_SESSION['checkbox4'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox4</label>
</td>
<td>
<input class='c3' type='checkbox' lid='checkbox5' <?php echo (isset($_SESSION['checkbox5'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox5</label>
</td>
<td>
<input class='c3' type='checkbox' lid='checkbox6' <?php echo (isset($_SESSION['checkbox6'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox6</label>
</td>
</tr>
</table>
</body>
</html>
<script>
$(document).ready(function() {
$('input[type=checkbox]').on('change', function() {
$.get("sefesf.php", { 'checkbox[]':$(this).attr('lid') });
})
});
</script>
>复选框2
>复选框4
>复选框6
$(文档).ready(函数(){
$('input[type=checkbox]')。在('change',function()上{
$.get(“sefesf.php”,{'checkbox[]':$(this.attr('lid')});
})
});
瘦子
基本上,每次选中一个框时,都会向其自身发出GET请求,并执行+!在会议上。意思是相反的。因此,它将自动选中和取消选中会话变量。该请求通过AJAX异步完成并存储数据。检查功能是在服务器端使用PHP在页面加载时使用DOM中的一个简单三元运算符完成的
要做的事
确保您在_GET上添加了一些验证,您不希望存储错误的数据
而且,这是一种相当肮脏的方式来做这类事情,但仍然是一种方式
祝你好运,如果有问题请告诉我 为什么你没有名字属性?除非我遗漏了什么。。。如何设置$_GET['x']?如果没有ajax调用,javascript不会发出GET请求。@user1885099那么您如何通过查询字符串将数据提交回页面?我将通过jquery传递数据。post@user1885099请将回发代码以及如何检查帖子中的会话内容包括在内。我使用以下方法:location.href='target.php?x='+x;我忘了在我发布的带条代码中添加它。通过任何链接/按钮??然后单击该按钮后,检查您的URL,它在那里显示了什么值。