1

我有一个分三个步骤的表单,从第 1 步到第 2 步有一个复选框,我想将复选框值保留在会话中,并且即使用户转到表单的第 3 步,也要显示它是选中还是未选中然后回到第二步,现在在提交表单时,我在 $_SESSION vars 中拥有所有 $_POST 变量,但我无法使用复选框,这就是我现在得到的:

   <input type="checkbox" value="<?php  echo isset($_POST['afficher_ddn'])? "1":"0";  ?>"
   style="margin-left: 20px;" name="afficher_ddn" id="afficher_ddn" 
<?php echo $_SESSION['afficher_ddn']=="1" ? "checked" : ""; ?> />

但这不起作用。

4

3 回答 3

1
<input type="checkbox" value="1" style="margin-left: 20px;" name="afficher_ddn" id="afficher_ddn" 
<?php echo isset($_SESSION['afficher_ddn']) && $_SESSION['afficher_ddn'] == "1" ? 'checked="checked"' : ''; ?> />

一方面,您不会更改复选框的值。如果未选中,则不会传递给 post vars。请参见此处:<input type="checkbox" /> 是否仅在选中后才发布数据?

现在,检查的当前标准是checked="checked"我不知道这个标准在哪里或为什么成为我工作的公司的一个标准,但这是我们所做的,所以我在这里转发。

如果此处提供的代码对您不起作用,我会 var_dump($_SESSION) 以确保它已设置,并在诸如 firebug (firefox) 或 chrome 中的开发人员工具之类的东西中检查实际的 HTML。有时会发生愚蠢的事情,checked="checked" 实际上是在 html 中设置的,但不会显示在浏览器中。在那些时候,我通常会拔出一些头发并清除缓存。然后它通常会清除。

于 2012-11-07T19:24:55.670 回答
1

您的代码很好。在会话中传递值时可能存在一些问题,因为我正在手动检查代码,它工作正常:使用 print_r($_SESSION) 进行测试并发布输出;如果可能,请提供所有表格:

Try Below Code:

   <input type="checkbox" value="1"
   style="margin-left: 20px;" name="afficher_ddn" id="ddn" 
<?php echo $_SESSION['afficher_ddn']=="1" ? "checked" : ""; ?> /> 
于 2012-11-07T19:30:50.073 回答
0

单独试试这个例子

将页面 test.php 设为:

    <?php
    session_start();
    ?>
    <form methos='post' method='post' action='test1.php'>
       <input type="checkbox" value="1"
       style="margin-left: 20px;" name="afficher_ddn" id="ddn"
    <?php echo $_SESSION['afficher_ddn']=="1" ? "checked" : ""; ?> /><br>
Name:<input type='text' name='f1' value='<?php echo $_SESSION['f1'] ?>' ><br>
Select:<select name='s1'>
<option value="" <?php echo $_SESSION['s1']=="" ? "selected" : ""; ?>></option>
<option value="1" <?php echo $_SESSION['s1']=="1" ? "selected" : ""; ?>>1</option>
<option value="2" <?php echo $_SESSION['s1']=="1" ? "selected" : ""; ?>>2</option>
</select><br>
Test:
<textarea name='tex1'><?php echo $_SESSION['tex1']; ?></textarea>

    <input type='submit'  value='submit'>
    </form>

制作第二页 test1.php 为:

    <?php
    session_start();
    print_r($_POST);
    echo $_SESSION['afficher_ddn']=$_POST['afficher_ddn'];
echo $_SESSION['f1']=$_POST['f1'];
echo $_SESSION['s1']=$_POST['s1'];
echo $_SESSION['tex1']=$_POST['tex1'];
    ?>
    <form methos='post' action='third.php'>

    <a href='test.php'>Step1</a>
    </form>

并检查

于 2012-11-07T20:22:19.623 回答