我正在创建一个可以查询多个字段的搜索 - 搜索有助听器的男性用户。
表单中的html代码如下所示
<form name="O_search" method="post" action="search.php">
Gender (M/F)<input type="text" name="O_gender"/>
Hearing Aid (Y/N)<input type="text" name="O_hear"/>
<input type="hidden" name="O_searching" value="yes" />
php代码看起来像这样
if (isset($_POST['O_searching'] ))
{
echo "<h2>Results</h2><p>";
if (isset($_POST['O_gender']) || isset($_POST['O_hear']) == "")
{
echo "You forgot to enter a search term";
exit;
}
$Gender =$_POST['O_gender'];
$Hear =$_POST['O_hear'];
$Gender = strtoupper($Gender);
$Gender = strip_tags($Gender);
$Gender = trim ($Gender);
$Hear = strtoupper($Hear);
$Hear = strip_tags($Hear);
$Hear = trim ($Hear);
$Odata = mysql_query("SELECT * FROM p_candidate WHERE(`gender` LIKE '%".$Gender."%') AND (`hear` LIKE '%".$Hear."%')") or die(mysql_error());
while($result = mysql_fetch_array($Odata))
{
$candidate_id =$result['candidate_id'];
echo "<tr>";
echo "<td><a href ='opening_candidatepage.php?id=$candidate_id'>".$result['R_first_name']." ".$result['R_last_name']."</td>";
echo "<td>".$result['R_county']."</td>";
}
$anymatches=mysql_num_rows($Odata);
if ($anymatches == 0)
{
echo "Sorry, there is no match for your query<br><br>";
}
echo "<b>Searched For:</b> " .$Gender." and".$Hear ;
}
?>
我不知道自己哪里出错了,但即使我在字段中输入有效的搜索字词,我也会收到消息 您忘记输入搜索字词
答案 0 :(得分:4)
如果设置了值,则导致错误条件。您希望在未设置错误时触发错误。
if( !isset($_POST['O_gender']) || !isset($_POST['O_hear']))
答案 1 :(得分:1)
而不是这一行,
if (isset($_POST['O_gender']) || isset($_POST['O_hear']) == "")
尝试这个
if (!isset($_POST['O_gender']) || !isset($_POST['O_hear']))
答案 2 :(得分:0)
即使是空白字符串,也始终在表单中设置文本字段。您应该使用isset进行最佳实践,但也可以使用strlen和trim来查看字符串是否包含任何内容。您还希望仅在没有字符串时显示错误消息。
if(!isset($_POST['O_hear']) || strlen(trim($_POST['O_hear'])) == 0)
如果需要,可以为这两个术语执行此操作。有点不清楚你想要做什么。