我已经运行了一个与html页面交互的成功的php页面。然而,有一个实例朝着最终的地方,php没有像预期的那样进行交互。
我遇到的问题是,无论选择何种颜色,或者根本没有挑选任何颜色,页面总是执行“安德鲁讨厌你”。如果用户选择了“红色”,我只希望显示此消息。我希望“安德鲁喜欢你”的信息显示是否选择了“绿色”,“黄色”,“蓝色”或“紫色”。
HTML PAGE:
<html>
<head>
<title>Test</title><br />
</head>
<body>
<form action="website.php" method="POST">
<p><strong>Name:</strong></br>
<input type="text" name="user"/></p>
<p><strong>Age:</strong><br/>
<input type="text" name="age"/></p>
<p><strong>What's your favourite colour?</strong><br/><br>
<select name="colour[]" multiple="multiple">
<option value="Green">Green</option>
<option value="Blue">Blue</option>
<option value="Red">Red</option>
<option value="Yellow">Yellow</option>
<option value="Purple">Purple</option>
</select>
<p><input type="submit" value="Submit"/></p>
</form>
</body>
</html>
PHP页面:
//the first part of this php page works perfectly
<?php
echo "<p>Hi <b>". $_POST["user"]."!</p>";
echo "<p>You are <b>".$_POST["age"]."</b><p>";
echo "<p> Your favourite colour is: <br/>";
if (!empty($_POST["colour"])) {
echo "<ul>";
foreach ($_POST ["colour"] as $value) {
echo "<li>$value</li>";
}
echo "</ul>";
}
?>
//this is where things start to break down
<?php
$funny_colour = "Red";
if ($_POST["$value"] = $funny_colour) {
$message = "Andrew hates you"; // Always shows no matter what
echo $message;
} else if ($_POST["$value"] != $funny_colour) {
$message = "Andrew likes you"; // Never shows
echo $message;
}
?>
感谢您的帮助,我真的很感激,并会尽力回答您的一些问题。
答案 0 :(得分:1)
if ($_POST["$value"] = $funny_colour)
不正确,您必须使用==
或===
进行比较。
=
是一个赋值,并且将始终返回true。
此外,$ value仅在foreach循环中设置,当您尝试在if
中使用它时,您已经丢失了它。
答案 1 :(得分:1)
你将$ _POST [“color”]作为数组。
$funny_colour = "Red";
foreach ($_POST ["colour"] as $value) {
if ($value == $funny_colour) {
$message = "Andrew hates you"; // Always shows no matter what
echo $message;
} else if ($value != $funny_colour) {
$message = "Andrew likes you"; // Never shows
echo $message;
}
}