2013-06-24 5 views
-1

Я создаю поиск, который может запрашивать несколько полей - поиск мужчины, у которого есть слуховой аппарат.isset() не работает должным образом

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

Я не знаю, где я пошло не так, но даже когда я ввожу действительный поисковый запрос в поле, я получаю сообщение . Вы забыли ввести поисковый запрос

+6

'isset ($ _ POST ['O_hear']) ==" "' - вам не нужно сравнение там, просто 'isset ($ _ POST ['O_hear'])' будет делать это – andrewsi

ответ

4

Вы вызываете условие ошибки, если установлено значение IS. Вы хотите вызвать ошибку, если она НЕ установлена.

if(!isset($_POST['O_gender']) || !isset($_POST['O_hear'])) 
+0

Большое вам спасибо ... это сработало !!! Великолепный ... – user2510479

1

Instaed этой линии,

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

попробовать это один

if (!isset($_POST['O_gender']) || !isset($_POST['O_hear'])) 
0

текстовое поле всегда будет иметь значение в форме, даже если в пустую строку. Вы должны использовать isset для лучших практик, но также использовать strlen и trim, чтобы увидеть, содержит ли строка что-либо. Вы также хотите отображать сообщение об ошибке, когда нет строки.

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

ли, что для обоих членов, если это необходимо. Немного непонятно, что вы пытаетесь сделать.

Смежные вопросы