За последние 24 часа нас посетили 18739 программистов и 1603 робота. Сейчас ищут 866 программистов ...

Поисковик

Тема в разделе "PHP и базы данных", создана пользователем devid134, 26 июл 2013.

  1. devid134

    devid134 Новичок

    С нами с:
    19 июл 2013
    Сообщения:
    14
    Симпатии:
    0
    Как сделать чтобы когда в поисковике пусто и при нажатии на кнопку найти выводилось сообщение что вы ничего не ввели...
    Код (Text):
    1.  
    2. /*  === Поиск ===  */
    3. function search(){
    4.     $search = clear($_GET['search']);
    5.     $result_search = array(); // результат поиска
    6.    
    7.        
    8.     if(mb_strlen($search, 'UTF-8') < 3){
    9.         $result_search['notfound'] = "<div class='error_search'>Поисковый запрос должен содержать<br /> не менее 3-х символов!</div>";
    10.     }else{
    11.         $query = "SELECT goods_id, name, img, anons_list, anons, price, hits, new, sale, articul
    12.                     FROM goods
    13.                         WHERE MATCH(name, keywords, articul, anons_list, anons, content)
    14.                             AGAINST('$search*' IN BOOLEAN MODE) AND visible='1'";
    15.         $res = mysql_query($query) or die(mysql_error());
    16.        
    17.         if(mysql_num_rows($res) > 0){
    18.             while($row_search = mysql_fetch_assoc($res)){
    19.                 $result_search[] = $row_search;
    20.             }
    21.         }else{
    22.             $result_search['notfound'] = "<div class='error_search'>По Вашему запросу ничего не найдено!</div>";
    23.         }
    24.        
    25.     }
    26.    
    27.     return $result_search;
    28. }
    29. /*  === Поиск ===  */
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Может так? О_о

    Код (Text):
    1.  if(empty($search)){ $result_search['notfound'] = "<div class='error_search'>Вы ничего не ввели! Расточитель серверных мощностей!!!!!!!!!!</div>";}
    Но по-хорошему, дабы не расточать серверные мощности, можно предварительную проверку сделать на JS, или с помощью HTML5-атрибута "pattern" у поля ввода. Это, разумеется, не 100% защита, ибо есть люди без JS, есть люди без HTML5, а еще есть люди с JS и с HTML5 и с шаловливыми ручонками, ковыряющимися в коде страницы и отключающими паттерны и JS. Вот на такой случай уже серверу придется сделать проверку. Но в 95% случаев холостой запрос к серваку произведен не будет.
     
  3. devid134

    devid134 Новичок

    С нами с:
    19 июл 2013
    Сообщения:
    14
    Симпатии:
    0
    ошибок не выдает но все-равно ничего не меняется
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А код этот вы куда именно вставили-то?

    Добавлено спустя 2 минуты 25 секунд:
    Мб вот как-то так оно у вас провернется?

    Код (PHP):
    1. /*  === Поиск ===  */
    2. function search(){
    3.     $search = clear($_GET['search']);
    4.     $result_search = array(); // результат поиска
    5.     
    6.      if(empty($search)){ 
    7.      $result_search['notfound'] = "<div class='error_search'>Вы ничего не ввели! Расточитель серверных мощностей!!!!!!!!!!</div>";
    8.      return $result_search;
    9.      }
    10.         
    11.     if(mb_strlen($search, 'UTF-8') < 3){
    12.         $result_search['notfound'] = "<div class='error_search'>Поисковый запрос должен содержать<br /> не менее 3-х символов!</div>";
    13.     }else{
    14.         $query = "SELECT goods_id, name, img, anons_list, anons, price, hits, new, sale, articul
    15.                     FROM goods
    16.                         WHERE MATCH(name, keywords, articul, anons_list, anons, content) 
    17.                             AGAINST('$search*' IN BOOLEAN MODE) AND visible='1'";
    18.         $res = mysql_query($query) or die(mysql_error());
    19.         
    20.         if(mysql_num_rows($res) > 0){
    21.             while($row_search = mysql_fetch_assoc($res)){
    22.                 $result_search[] = $row_search;
    23.             }
    24.         }else{
    25.             $result_search['notfound'] = "<div class='error_search'>По Вашему запросу ничего не найдено!</div>";
    26.         }
    27.         
    28.     }
    29.     
    30.     return $result_search;
    31. }
    32. /*  === Поиск ===  */ 
    Добавлено спустя 2 минуты 26 секунд:
    Вообще я хз, что по дефолту ваша страничка отдает в запросе. Может там не пустое значение, может там еще что. Проверяйте, что скрипту приходит при пустом вызове и вбивайте это значение в проверку в коде.