首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从复选框数据列表中保存$_SESSION?

从复选框数据列表中保存$_SESSION?
EN

Stack Overflow用户
提问于 2013-08-08 02:45:24
回答 2查看 467关注 0票数 0

我试图保存$_SESSION数据以保持页面刷新时选中的值,我已经编写了一些代码,但我遗漏了一部分。

会话代码:

代码语言:javascript
复制
 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'] = '';  
   }
 }

表单代码:

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

为了进行测试,我在隐藏输入中回显$_SESSION['value']['memory_0'] && $_SESSION['value']['memory_1'],它们正确返回,如果检查输入,类为1,如果未选中,类为0。

我不确定是否它=1然后回显checked="checked"的最佳方式

我的粗野尝试:

代码语言:javascript
复制
<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"';} ?> />

这将返回一个错误“不能使用标量值作为数组”,这一点我不喜欢这样写。

因此,对于所有给定的信息,如果我的值=1返回checked="checked",那么最好的编写方式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-08 02:54:37

这将使PHP更加干净和可伸缩:

在顶部使用此函数:

代码语言:javascript
复制
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.' />';
}

然后,不要为每个复选框写出<input ... <?php ... ?> ... />,只需使用

代码语言:javascript
复制
<?php checkbox(0); ?>
<?php checkbox(1); ?>
票数 1
EN

Stack Overflow用户

发布于 2013-08-08 02:57:18

您的短暂尝试有一个错误:

而不是<?php if($_SESSION['value']['memory_0'] = 1),尝试<?php if($_SESSION['value']['memory_0'] == 1)

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

https://stackoverflow.com/questions/18117117

复制
相关文章

相似问题

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