Может кто-нибудь указать мне, почему нижеследующее не работает? Он перенаправляет только на первое место, даже если я выбираю разные переключатели.
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>
Вы должны использовать оператор сравнения ==
вместо =
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()
также избыточен, поскольку вы уже перенаправляетесь на другую страницу.
=
задание. ==
равенство. Вы путаете эти два.
Чтобы добавить к другим ответам, когда вы используете оператор присваивания (=) вместо операторов сравнения (== или ===), назначение передается справа налево.
Итак, верно следующее:
"camera" == $_POST['electronics'] = "camera"
Что в вашем случае истинно, чтобы удовлетворить if
Это то же поведение, что позволяет делать несколько присвоений с одним значением.
например:
$foo = $bar = 10;
$foo
и $bar
назначаются 10.