0

我试图保存 $_SESSION 数据以保持页面刷新时检查的值,我写了一些代码,但我错过了一段。

会话代码:

 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>

对于测试,我在隐藏输入中回显$_SESSION['value']['memory_0']&& $_SESSION['value']['memory_1'],它们正确返回,如果输入被选中,则类为 1,如果未选中,则类为 0。

我不确定如果它 = 1 则回显的最佳方式checked="checked"

我的尝试:

<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"';} ?> />

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

所以有了所有给定的信息,如果我的 value = 1 return ,最好的写法是什么checked="checked"

4

2 回答 2

1

这将使您的 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.' />';
}

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

<?php checkbox(0); ?>
<?php checkbox(1); ?>
于 2013-08-08T02:54:37.057 回答
1

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

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

于 2013-08-08T02:57:18.713 回答