PHP:以html格式与“选定值”进行交互

时间:2013-08-23 07:54:42

标签: php html

我已经运行了一个与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;
  }

  ?>

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

2 个答案:

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