2013-09-12 20 views
0

Может кто-то указать мне, почему нижеследующее не работает? Он перенаправляет только на первое место, даже если я выбираю разные переключатели.PHP Header Location Не работает должным образом

PHP:

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

    if (!empty($_POST['electronics'])) { 

     if ($_POST['electronics'] = "camera") { 
      header("location: camera.php"); 
      exit(); 
     } 
     if ($_POST['electronics'] = "cell") { 
      header("location: cellphones.php"); 
      exit(); 
     } 
     if ($_POST['electronics'] = "cable") { 
      header("location: cables.php"); 
      exit(); 
     } 
     if ($_POST['electronics'] = "tv") { 
      header("location: tv.php"); 
      exit(); 
     } 
    } 

... 

HTML:

<form action="" method="post"> 
    <input type="radio" name="electronics" value="cell"/> 
    <input type="radio" name="electronics" value="camera"/> 
    <input type="radio" name="electronics" value="cable"/> 
    <input type="radio" name="electronics" value="tv"/> 
    <input type="submit" name="submit"> 
</form> 
+0

'= == ===' это лучшее, что я могу придумать – hjpotter92

ответ

5

Вы должны использовать оператор сравнения == вместо =

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

    if (!empty($_POST['electronics'])) { 

     if ($_POST['electronics'] == "camera") { 
      header("location: camera.php"); 
     } 
     else if ($_POST['electronics'] == "cell") { 
      header("location: cellphones.php"); 
     } 
     else if ($_POST['electronics'] == "cable") { 
      header("location: cables.php"); 
     } 
     else if ($_POST['electronics'] == "tv") { 
      header("location: tv.php"); 
     } 
    } 

... 

Кроме того, exit() также избыточными, как вы уже перенаправляется на другую страницу.

+0

Спасибо за помощь!. Приму. Окно также удалит выход. – amdvb

2

= - это назначение. == - это равенство. Вы путаете эти два.

+0

oops Я думал, что у меня два. благодаря – amdvb

1

Чтобы добавить к другим ответам, когда вы используете оператор присваивания (=) вместо операторов сравнения (== или ===), присваивание передается справа налево.

Так верно следующее:

"camera" == $_POST['electronics'] = "camera" 

Что в вашем случае достаточно верно, чтобы удовлетворить if

Это такое же поведение, что позволяет сделать несколько заданий с одним значением.

например:

$foo = $bar = 10; 

$foo и $bar оба назначены 10.

Смежные вопросы