2

我已经运行了一个与 html 页面交互的成功的 php 页面。但是,有一次在最后的实例中 php 没有按预期进行交互。

我遇到的问题是,无论选择什么颜色,或者根本没有选择任何颜色,页面总是执行“安德鲁讨厌你”。我只希望这条消息显示用户是否选择了“RED”。我希望消息“安德鲁喜欢你”显示是否选择了“绿色”、“黄色”、“蓝色”或“紫色”。

HTML页面:

 <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;
  }

  ?>

感谢您的帮助,我真的很感激,并将努力回答您的一些问题。

4

2 回答 2

1
if ($_POST["$value"] = $funny_colour) 

是不正确的,你必须使用=====比较。 =是一个赋值,并且总是返回 true。

此外, $value 仅在 foreach 循环中设置,当您尝试在if.

于 2013-08-23T07:57:39.500 回答
1

您将获得 $_POST["colour"] 作为数组。


$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;
  }
}
于 2013-08-23T07:57:47.117 回答