2011-02-17 80 views
0

我是PHP新手,所以请原谅如果这个问题或问题似乎令人困惑 我想创建一个搜索表单,有一个2下拉选项:圣彼得或JHS。用户键入教授的名字,然后选择教授教授的学校 。形式有以下PHP搜索表单

<form name=form action="form.php" method="GET"> 
<input type="text" name="find" /> 
<select name="school[]" > 
<option value="">School</option> 
<option value="1">St.Peter</option> 
<option value="2">JHS</option> 
</select> 
<input type="submit" name="Submit" value="Search" /> 
</form> 

,我现在用的form.php的脚本是

<?php 
$q=$_GET["find"]; 
$s=$_GET["school"]; 
$con = mysql_connect('localhost', 'peter', 'abc123'); 

if($q && ($s==St.Peter)) 
echo "that professor belongs to St.peter H.S"; 
else{echo "that professor does not belong to this school"; } 
elseif($q && ($s==JHS)) 
echo "that professor belongs to JHS H.S"; 
else{echo "that professor does not belong to this school"; } 
?> 

当我运行此,输出我得到的是。 ,教授属于St.peter H.S教授属于JHS H.S

如果我改变脚本只是为了看看第一个if语句是否正确例如。

<?php 
$q=$_GET["find"]; 
$s=$_GET["school"]; 
$con = mysql_connect('localhost', 'peter', 'abc123'); 

if($q && ($s==St.Peter)) 
echo "that professor belongs to St.peter H.S"; 
else{echo "that professor does not belong to this school"; } 

?> 

这种回声指出,教授所属的圣彼得H.S,如果变化

if($q && ($s==St.Peter)) 

if($q && ($s==St.P)) 

它回声了同样的事情。这回应出教授属于St.peter H.S,

+1

使用干净的缩进!这是学习编程的第一条规则。 – powtac 2011-02-17 17:11:51

回答

0

这是因为实际发送的是选项的“值”,而不是文本。你应该寻找 “1” 或 “2”

if ($q && $s == 1) 
+0

if($ 1 && $ s == 1) thats off不应该喜欢如果($ q && $ s =='1') 谢谢你 – user621799 2011-02-17 17:50:37

+0

修好了,谢谢 – helloandre 2011-02-17 21:22:48

1
if($q && ($s==St.Peter)) 

这在语法上是不正确的。 PHP会看到“圣彼得”作为一个未定义的常量,而不是字符串,你应该有

if($q && ($s == 'St.Peter')) 

同时,你的大的if/else块是不正确。您有

if (...) { 
} else { 
    ... 
} else if { 
    ... 
} 

这是一个语法错误。一个else是if()系列中的最后一个“if all else failed”。如果你不能跟随其他人。该块应该是

if (...) { 
} else if (...) { 
} else if (...) } 
} else { 
} 
1

您必须与SELECT OPTION的值进行比较。尝试:

if($q && ($s=='1')) 
0

马克B. +传染性

<select name="school[]" > 

这指示PHP创建GET [ '学校']参数数组。用于多个复选框等。你应该去

<select name="school" >