2015-05-03 37 views
-1

我遇到了让我的PHP脚本正确读取并执行我的“如果.... .ELSEIF“条件。

在我的第一个文件,我有以下代码:

if(isset($_POST['submit']) { 

$selected_radio = $_POST['selection']; 

$_SESSION['my_selection'] = $_POST['selection']; 

if (($selected_radio == '25') { 

    header("url=http://xxxxxxxxxxxxxxxxx"); 
    } 

    elseif (($selected_radio == '50') { 

    header("url=http://xxxxxxxxxxxxxxxxx"); 
    } 

}

这是比较容易的部分。

如果不是“单选按钮”时,我有打开一个“新(子)窗口

这也很容易JavaScript函数。

但是,然后,到了困难的部分:该新窗口内,则用户必须从单选按钮的另一种选择中进行选择:

if(isset($_POST['submit']) { 

$selected_radio = $_POST['my_response']; 

if (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25'))  
{ 

echo '<script type="text/javascript">window.opener.location = 
"/PHP/25.php";setTimeout("window.close();", 1000);</script>'; 
      } 

elseif (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = 
'50')) { 

echo '<script type="text/javascript">window.opener.location = 
"/PHP/50.php";setTimeout("window.close();", 1000);</script>'; 
      } 

基本上,这意味着:如果用户选择“ “在当前(子)窗口中,窗口关闭,父窗口重新指向”25.php“或”50.php“..........取决于$ _SESSION ['my_selection'] ---之前在父窗口中选择的值

但是,由于某种原因,它不起作用。我的代码执行只有第一个IF条件:

if (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25'))  
{ 

echo '<script type="text/javascript">window.opener.location = 
"/PHP/25.php";setTimeout("window.close();", 1000);</script>'; 
      } 

它完全忽略了第二个.............即使用户早先选择“50父窗口中的“”。

我的第一个想法是:单选按钮的SESSION值---- $ _SESSION ['my_selection'] ---没有被带入新的(子)窗口。

但是,我用“echo”来验证这是否正常工作。这个价值确实正在被转移到新的(孩子)窗口中。

但是,在子窗口关闭并且父窗口被重定向后,我再次使用“echo”来跟踪任何错误........并且显示:值$ _SESSION ['my_selection']总是等于“”!

简而言之:为什么第二个IF语句被忽略?

elseif (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = 
    '50')) { 

    echo '<script type="text/javascript">window.opener.location = 
    "/PHP/50.php";setTimeout("window.close();", 1000);</script>'; 
+0

@HarshJoshi没关系http://php.net/elseif – vascowhite

回答

4
($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25') 
        ^         ^

单等号是一个任务,并为您分配的值是truthy的if将始终评估为true。使用==进行比较。

+0

非常感谢您的帮助! :=) – phpnewbie2015

1

您在几乎所有的语句中使用=代替==

if (($_POST['my_response'] = 'yes') 

应该

if (($_POST['my_response'] == 'yes') 

这样,你不检查,如果$_POST['my_response']等于为 “yes” ,但是如果可以将“是”分配给$_POST['my_response']。因此,全部您的if陈述是true

+0

非常感谢您的帮助! :=) – phpnewbie2015