2012-11-07 28 views
1

我有一个表格在三个步骤,从步骤1到步骤二有一个复选框,我想保留在会话中的复选框的值,并显示是否检查或即使用户转到步骤3的表单,然后回到步骤二, 现在表单提交我已经在$ _SESSION vars所有$ _POST变量,但我不能使它与复选框一起工作,这就是我得到的现在:存储复选框的多步骤形式与PHP会话

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

但这不工作。

+0

什么不起作用?你得到一个错误? – Ibu

+1

'if($ _SESSION ['ddn'] ==“1”){echo“checked”; ''? – andrewsi

回答

0

尝试这个例子separetly

制作一个网页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> 

和检查

+0

谢谢你,这是一个好主意,我现在尝试.. – user7832

+0

好吧,所以这里的逻辑工作,所以它必须是我的文件中的东西,奇怪的是,它只涉及复选框。 – user7832

+0

添加为字段类型请检查......... –

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

其中之一,你不改变复选框的值。如果它没有被检查,它不会传递到后变量。请看这里:Does <input type="checkbox" /> only post data if it's checked?

现在,当前的检查标准是checked="checked"我不知道该标准在我工作的公司的何处或为什么成为一个标准,但这是我们所做的,因此我在此继承。

如果在这里提供的代码不适合你,我会var_dump($ _ SESSION)来确定它的设置,以及检查实际的HTML,如firebug(firefox)或chrome中的开发人员工具。有时会发生愚蠢,并且checked =“checked”实际上是在html中设置的,但不会在浏览器中显示。在那些时候,我通常会抽出一些头发和清除缓存。那么它通常会清除。

+0

谢谢,但它不工作,如果我选中复选框前进的形式的步骤,然后回到复选框,然后复选框未选中 – user7832

+0

你怎么回去?您是否点击了web-ui元素或浏览器的实际后退按钮? –

1

您的代码fine.Possibly有在会议上传递的价值,因为我手动检查的代码是可以正常使用的一些问题: 使用的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" : ""; ?> /> 
+0

这是var转储所以数组([nom] => sdfs [prenom] => sdf [adresse] => sdf [code_postal] => sdf [ville] => sdf [JJ] => 20 [数组] [数组] [数组] MM] => 06 [AAAA] => 1970 [tel] => sdfdsf [linkedin] => [viadeo] => [site_web] => [submit_step_1] => suivant→[civilite] => Mme [name] => [tmp_name] => [step] => Array([2] => 2)[afficher_ddn] => 1)' – user7832

+0

是$ _SESSION或$ _POST?我没有在那里看到ddn。有afficher_ddn,但这不是一样的东西。 –

+0

如果它是$ _SESSION,它不显示任何ddn字段?请检查... –