2011-05-31 56 views
0

我有一个php multistep窗体的问题。 我只需要在一个页面中执行不同表单之间的切换。 在这个页面我切换如下情况:问题与使用会话的php多步骤形式

$_SESSION["profilo"]= $_POST["profilo"]; 
$_SESSION["periodic"]=$_POST["periodic"];  
$_SESSION["from"]=$_POST["from"]; 
$_SESSION["to"]=$_POST["to"]; 
$_SESSION["weekdays"]=$_POST["weekdays"]; 
$_SESSION["start"]=$_POST["start"]; 
$_SESSION["expire"]=$_POST["expire"]; 
$step = 1; 

if(!isset($_SESSION["profilo"])) 
{ 

    $step = 1; 
} 
elseif(isset($_SESSION["profilo"]) && !isset($_SESSION["periodic"])) 
{ 

    $step = 2; 
} 
elseif(isset($_SESSION["periodic"]) && !isset($_SESSION["start"])) 
{ 

    $step = 3; 

} 
else 
{ 

    $step = 4; 
} 

然后我执行指令

WriteForm($step); 

其是切换不同形式,这取决于$步骤的值的函数。 问题是,在第二步之后,它将我踢回到第一步完成第三步。我认为问题在于第二次点击“提交”,在我的第二个表单中我没有“ profilo“字段:以下执行我的页面会覆盖$ _SESSION [”profilo“],其NULL值将返回到if循环的第1步。 我该如何解决这个问题?为了提供信息:form1只有“profile”字段,form2有“periodic”,“from”,“to”,“weekdays”,form3有“start”,“expire”的编辑: 。

+0

这听起来像你已经确定了一个可能的原因? – 2011-05-31 19:18:13

+0

但不是解决方案!也许这很简单,但我发誓我找不到它。脑融合;) – breathe0 2011-05-31 19:24:23

+0

我建议你改变的第一件事是移动你的$ _SESSION [$ a] = $ _POST [$ a]语句到你的IF条件之一,除非你期望所有这些字段被提交每一页。您只应在客户有机会设置/更新这些值的步骤中设置它们。 – 2011-05-31 19:27:13

回答

1
if(isset($_POST["profilo"])) $_SESSION["profilo"]= $_POST["profilo"]; 
if(isset($_POST["periodic"])) $_SESSION["periodic"]=$_POST["periodic"];  
if(isset($_POST["from"])) $_SESSION["from"]=$_POST["from"]; 
if(isset($_POST["to"])) $_SESSION["to"]=$_POST["to"]; 
if(isset($_POST["weekdays"])) $_SESSION["weekdays"]=$_POST["weekdays"]; 
if(isset($_POST["start"])) $_SESSION["start"]=$_POST["start"]; 
if(isset($_POST["expire"])) $_SESSION["expire"]=$_POST["expire"]; 
$step = 1; 

if(!isset($_SESSION["profilo"])) 
{ 

    $step = 1; 
} 
elseif(isset($_SESSION["profilo"]) && !isset($_SESSION["periodic"])) 
{ 

    $step = 2; 
} 
elseif(isset($_SESSION["periodic"]) && !isset($_SESSION["start"])) 
{ 

    $step = 3; 

} 
else 
{ 

    $step = 4; 
} 
+0

真棒。谢谢! – breathe0 2011-05-31 19:49:58