-1

我正在创建一个可以查询多个字段的搜索 - 搜索一个有助听器的男性。

表单中的 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']."&nbsp;&nbsp;".$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."&nbsp;&nbsp;and".$Hear ; 
 }
 ?>

我不知道我哪里出错了,但即使我在字段中输入了有效的搜索词,我也会收到消息您忘记输入搜索词

4

3 回答 3

4

如果设置了值,您将导致错误情况。您想在未设置时触发错误。

if( !isset($_POST['O_gender']) || !isset($_POST['O_hear']))
于 2013-06-24T17:04:11.883 回答
1

代替这条线,

if (isset($_POST['O_gender']) || isset($_POST['O_hear']) == "") 

试试这个

if (!isset($_POST['O_gender']) || !isset($_POST['O_hear'])) 
于 2013-06-24T17:04:40.500 回答
0

文本字段将始终设置在表单中,即使是空白字符串。您应该使用 isset 进行最佳实践,但也可以使用 strlen 和 trim 查看字符串是否包含任何内容。您还希望仅在没有字符串时显示错误消息。

if(!isset($_POST['O_hear']) || strlen(trim($_POST['O_hear'])) == 0)

如果需要,对这两个术语都这样做。有点不清楚您要做什么。

于 2013-06-24T17:05:27.320 回答