2015-04-29 3 views
-2

У меня есть форма поиска на моем сайте, и я хочу, чтобы вернуть ошибку, если пользователь ищет что-то, что не существует в моей базе данныхЕсли поиск возвращает ничего не дает ошибке

<?php 

$search = $_POST['search' ]; 

$numrows = mysql_num_rows ($result); 

if($numrows != 0) echo "No results"; 
?> 

Это код что моя форма поиска использует, однако эхо «нет результатов» отображается на главной странице выше всех результатов, но не отображается, когда результатов поиска нет.

Я новичок в PHP, поэтому совершенно не уверен, почему это происходит.

Если вам нужен мой полный код, это ниже:

http://pastebin.com/xjxwhfDT

+0

if ($ numrows! = 0) echo "Нет результатов"; может быть, вы хотите это, если ($ numrows == 0) –

+0

У вас есть ваш тест назад. – GordonM

ответ

1

не было бы

if($numrows == 0) echo "No results"; 

, если ничего не найдено?

  • Ваш $numrows = mysql_num_rows ($result); не должен быть на том месте, где он на самом деле.

Вы должны сделать что-то вроде:

$count = count($result); 
if($count > 0) 
{ 
    while ($row =mysql_fetch_object ($result)) { 
     // do your stuff 
    } 
} 
else 
{ 
    echo 'no results'; 
} 

Кроме того, что точка $search = $_POST['search' ]; в цикле в то время? Вы, кажется, не используете его вообще.

+0

Это работает с тем, чтобы удалить текст над всеми результатами, но он по-прежнему не отображает ошибку на странице, когда результаты поиска не найдены. –

0

Вы можете использовать: -

 $numrows = mysql_num_rows ($result); 
     if($numrows > 0){ 

     while ($row =mysql_fetch_object ($result)) { 

     //- Main Content - 

     echo '<div class="wrapper">'; 
     ?> 
     <?php 

     //--------- GET THE POST HTML VARIABLES. PUT INTO PHP VARIABLES ----------------------------- 

     $search = $_POST['search' ]; 

      } 
    // write your whlie loop code here 
    }else{ 
     echo "No results"; 
     } 

mysql_num_rows Возвращает количество строк из результирующего набора. Проверить номер строки больше 0 или нет

+0

Текст «нет результатов» не отображается на странице, когда результатов поиска не найдено. –

+0

@CallumWatson вы проверяете это условие внутри своего цикла while, это неправильно. проверьте его перед циклом while. Я редактирую свой код. – Saty

0

Во-первых, учитывая код. Я хотел бы спросить, содержит ли результат $ result результат запроса?

ie.

$result = mysql_query("SELECT * FROM table1", $link); 
$num_rows = mysql_num_rows($result); 

Во-вторых, mysql_num_rows() возвращает число строк или FALSE. Итак, дважды проверьте, является ли $ results допустимым результирующим набором из действительного запроса.

Надеюсь, это поможет.

0

переместить ваш, если перед время, и это работает

Теперь

while ($row =mysql_fetch_object ($result)) { 
[...] 
$numrows = mysql_num_rows ($result); 
if($numrows != 0) 
[...] 

Correct

$numrows = mysql_num_rows ($result); 
if($numrows == 0){ echo 'no result'; die();} 
while ($row =mysql_fetch_object ($result)) 
[...] 

Потому что, если результат пуст, пока цикл не выполняется.

+0

Это работает, но он отображает ошибку даже до того, как пользователь выполнит поиск. –

+0

edit 'if ($ numrows == 0)' с 'if ($ numrows == 0 и isset ($ _ POST ['search']))' – LTasty

+0

Это удалило предварительный поиск, но теперь он не показывает сообщение при поиске; обновленный код: http://pastebin.com/gbjAfxKG –

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