Php 是否从复选框数据列表中保存$\会话?
我试图保存$\u会话数据以保持页面刷新时的选中值,我已经编写了一些代码,但我缺少一部分 会话代码:Php 是否从复选框数据列表中保存$\会话?,php,Php,我试图保存$\u会话数据以保持页面刷新时的选中值,我已经编写了一些代码,但我缺少一部分 会话代码: session_start(); if(isset($_POST['submit'])) { //user posted variable $checks = $_POST['personalization_result']; if(isset($_POST['personalization_result'])) { $_SESSION['value']
session_start();
if(isset($_POST['submit'])) {
//user posted variable
$checks = $_POST['personalization_result'];
if(isset($_POST['personalization_result'])) {
$_SESSION['value'] = $_POST['personalization_result']; }
else {
$_SESSION['value'] = '';
}
}
<form action="" method="post" id="question-form">
<input type="hidden" name="submit" value="1">
<li>
<input name="personalization_result[memory_0]" type="hidden" class="<?php echo $_SESSION['value']['memory_0'] ?>" value="0" />
<input name="personalization_result[memory_0]" type="checkbox" value="1" id="personalization_result_memory_0" />
</li>
<li>
<input name="personalization_result[memory_1]" type="hidden" class="<?php echo $_SESSION['value']['memory_1'] ?>" value="0" />
<input name="personalization_result[memory_1]" type="checkbox" value="1" id="personalization_result_memory_1" />
</li>
//There are many checkboxes, this is just two for demo purposes
<input class="submit" type="submit" value="Send" />
</form>
<input name="personalization_result[memory_0]" type="hidden" class="<?php echo $_SESSION['value']['memory_0'] ?>" value="0" />
<input name="personalization_result[memory_0]" type="checkbox" value="1" id="personalization_result_memory_0" <?php if($_SESSION['value']['memory_0'] = 1) {echo 'checked="checked"';} ?> />
表格代码:
session_start();
if(isset($_POST['submit'])) {
//user posted variable
$checks = $_POST['personalization_result'];
if(isset($_POST['personalization_result'])) {
$_SESSION['value'] = $_POST['personalization_result']; }
else {
$_SESSION['value'] = '';
}
}
<form action="" method="post" id="question-form">
<input type="hidden" name="submit" value="1">
<li>
<input name="personalization_result[memory_0]" type="hidden" class="<?php echo $_SESSION['value']['memory_0'] ?>" value="0" />
<input name="personalization_result[memory_0]" type="checkbox" value="1" id="personalization_result_memory_0" />
</li>
<li>
<input name="personalization_result[memory_1]" type="hidden" class="<?php echo $_SESSION['value']['memory_1'] ?>" value="0" />
<input name="personalization_result[memory_1]" type="checkbox" value="1" id="personalization_result_memory_1" />
</li>
//There are many checkboxes, this is just two for demo purposes
<input class="submit" type="submit" value="Send" />
</form>
<input name="personalization_result[memory_0]" type="hidden" class="<?php echo $_SESSION['value']['memory_0'] ?>" value="0" />
<input name="personalization_result[memory_0]" type="checkbox" value="1" id="personalization_result_memory_0" <?php if($_SESSION['value']['memory_0'] = 1) {echo 'checked="checked"';} ?> />
这会返回一个错误“不能将标量值用作数组”,我不喜欢这样写
因此,对于所有给定的信息,如果my value=1返回
checked=“checked”
?这将使您的PHP更干净、更具可扩展性,那么最好的编写方法是什么呢
在顶部使用此功能:
session_start();
function checkbox($id)
{
$isChecked = '';
if (isset($_SESSION['value']['memory_'.$id]))
{
$isChecked = ($_SESSION['value']["memory_".$id] == 1) ? 'checked="checked"' : '';
}
echo '<input name="personalization_result[memory_'.$id.']" type="checkbox" ';
echo 'value="1" id="personalization_result_memory_'.$id.'" ';
echo $isChecked.' />';
}
session_start();
函数复选框($id)
{
$isChecked='';
if(isset($\会话['value']['memory.'$id]))
{
$isChecked=($\u会话['value'][“内存”..$id]==1)?'checked=“checked”:'';
}
回声';
}
然后不写您的短暂尝试出现错误:
与其说
听起来像个白痴,不如说=
不应该是=
?没有好的眼睛,实际上效果很好。是的,我刚刚试过,它很有效,现在有更好的方法来清理它吗?IDK关于$somevariable=$\u SESSION['value']
那么如果($somevariable['memory\u 0']==1)
能稍微清理一下它呢?关于更干净的方法有什么建议吗?我会这样使用:
它比完整的代码更干净=)是的,我在插件中见过这个方法,那么$somevariable=$\u SESSION['value'==1
我认为这是有效的,并且将其最小化了好吧,理解=)是的,我同意,我只是简化了它,因为我有很多复选框,并且对我来说在变量中存储$\u会话['value']
是有意义的。。谢谢你指出==我从来没有认真考虑过我需要阅读更多关于如何正确使用的差异==我更喜欢避免使用javascript,当PHP可以处理我的需要时,只要javascript被禁用。@MichaelJosephAubry查看新的答案,它应该会为你节省大量重复的代码:)嘿,刚刚看到你的答案,感谢您抽出时间让我仔细想想:)内存也很独特,类似于$id
要将其转化为更动态的解决方案,如果我将其传递到类似函数复选框($type,$id)
的函数中,那么将[“内存”..$id]
缩短为[$id]
就更容易了,然后做
,因为它们看起来总是一个字符串,
实际上更长。。