2015-05-03 4 views
-1

У меня возникла проблема с получением моего PHP-скрипта для правильного чтения и выполнения моего «IF ... .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>'; 
      } 

Он полностью игнорируя второй ............., даже если пользователь ранее выбран " "в родительском окне.

Моя первая мысль была: значение 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']равно к "да" , но если можно присвоить «да» $_POST['my_response']. В результате все ваши if заявления: true.

+0

Большое спасибо за полезный ответ! знак равно – phpnewbie2015