2013-08-23 2 views
2

html 페이지와 상호 작용하는 성공적인 PHP 페이지를 실행했습니다. 그러나 PHP가 의도했던대로 상호 작용하지 않는 끝 부분에는 한 번 인스턴스가 있습니다.PHP : html 형식의 'selected values'와의 상호 작용

내가 겪고있는 문제는 어떤 색상이 선택 되든 또는 어떤 색상이 선택 되더라도 페이지가 항상 "앤드류가 당신을 미워"한다는 것입니다. 나는이 메시지가 사용자가 'RED'를 선택했는지를 보여 주기만을 원한다. 'GREEN', 'YELLOW', 'BLUE'또는 'PURPLE'이 선택되면 "Andrew가 좋아하는 메시지"를 표시하고 싶습니다.

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

    ?> 

감사합니다, 정말 감사하고 몇 가지 질문에 대답하기 위해 노력할 것입니다.

+0

'='이 아닌 비교를 위해 (= =') 값과 데이터 유형을 비교할 때 ==를 사용해야합니다. 그리고'$ value'는 정의되지 않았을 수도 있습니다. – Abrixas2

답변

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

고맙습니다 Parixit. 정말 감사합니다. –

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

가 잘못, 당신은 == 또는 === 비교하는 데 사용했습니다. =은 할당이며 항상 true를 반환합니다.

또한 $ value는 foreach 루프에서만 설정되며 사용자가 if에서 사용하려고하면 이미 잃어버린 것입니다.

+0

parixit의 답을보세요. 나는 그것이 당신이 필요로하는 것이라고 생각합니다. – Sugar