Strategius 52 09/19/16 19:38 Вылез очень неприятный баг - а именно после ввода запроса (появляется анджакс-результат), и удаления его из строки, блок, выводящий результаты не исчезает :( Нужная строчка в функции вроде присутствует: $('#als_results').hide();Всю голову уже сломал... Не ичезает и все, помогает только перезагрузка страницы. Помогите исправить этот баг, пожалуйста... Оформил id-шник #als_results для визуализации бага: Ajax Live Search v1.3 for IP.Board v3.4.x.zip Поделиться сообщением Ссылка на сообщение
Strategius 52 09/20/16 12:47 (изменено) Подскажите, пожалуйста, как доработать sql-запрос, чтобы поиск производился только по первой букве слов? Например, ищу словосочетание "Медведь Плюшевый", ввожу в поле поиска букву "е" и мне выдается: "Медведь Плюшевый". А нужно, чтобы его можно было найти только по буквам "м" и "п"... Не подскажете? Изменено 20 сентября 2016 пользователем Strategius Поделиться сообщением Ссылка на сообщение
Strategius 52 09/20/16 13:19 (изменено) Код, отвечающий за вывод результата: if( sizeof($searchStrings) == 1) { $searchSQL = mysql_query("SELECT * FROM ".$topics_table." WHERE approved='1' AND state!='link' AND forum_id IN ( $forum_ids ) AND title LIKE '%".$searchString."%' ORDER BY ".$sortby." DESC LIMIT ".$LIMIT); $total_results = mysql_num_rows(mysql_query("SELECT * FROM ".$topics_table." WHERE approved='1' AND state!='link' AND forum_id IN ( $forum_ids ) AND title LIKE '%".$searchString."%' ")); } if( sizeof($searchStrings) > 1) { $i=1; $searchSQL = "SELECT * FROM ".$topics_table." WHERE approved='1' AND state!='link' AND forum_id IN ( $forum_ids ) AND title LIKE '%".$searchStrings[0]."%' "; while($i < sizeof($searchStrings)) { $searchSQL .= " AND title LIKE '%".$searchStrings[$i]."%' "; $i++; } $total_results = mysql_num_rows(mysql_query($searchSQL)); $searchSQL .= " ORDER BY ".$sortby." DESC LIMIT ".$LIMIT; $searchSQL = @mysql_query($searchSQL); } Изменено 20 сентября 2016 пользователем Strategius Поделиться сообщением Ссылка на сообщение
siv1987 2628 09/21/16 08:13 AND title LIKE '%".$searchStrings[$i]."%'заменить на AND title REGEXP '[[:<:]]".preg_quote( $searchStrings[$i] )."' AND title LIKE '%".$searchString."%'заменить на AND title REGEXP '[[:<:]]".preg_quote( $searchString )."' 1 Поделиться сообщением Ссылка на сообщение
Strategius 52 09/21/16 08:21 Внес правки, но все равно почему-то не работает... Поиск выдает результаты по одной любой букве (не первой в словах), да и еще часть букв отсеклась и по ним поиск вообще не работает... Поделиться сообщением Ссылка на сообщение
siv1987 2628 09/21/16 08:32 title LIKE '%".$searchStrings[0]."%'тоже нужно заменить Поделиться сообщением Ссылка на сообщение
Strategius 52 09/21/16 08:51 (изменено) На это? title REGEXP '[[:<:]]".preg_quote( $searchStrings[0] )."'Заменил, но тоже не работает... Изменено 21 сентября 2016 пользователем Strategius Поделиться сообщением Ссылка на сообщение
siv1987 2628 09/21/16 09:19 На всякий случай установите кодировку соединения с mysql после$als_select_db = mysql_select_db($INFO['sql_database'], $als_connect_db);добавить if($INFO['sql_charset']){ mysql_set_charset($INFO['sql_charset']); } Поделиться сообщением Ссылка на сообщение
Strategius 52 09/21/16 09:29 (изменено) Эффекта нет :( Даже без последней правки (и с ней тоже) выдает нулевой результат поиска... Может тогда просто ограничить запрос вводом хотя бы трех символов, чтобы облегчить задачу? Заодно и запрос к БД не будет таким тяжелым... Изменено 21 сентября 2016 пользователем Strategius Поделиться сообщением Ссылка на сообщение
Strategius 52 09/21/16 09:41 А как не подскажете, пожалуйста? Хотя это и не очень правильное решение, очень жалко, что по первым символам не работает :( В чем же все-таки проблема может быть? Поделиться сообщением Ссылка на сообщение
siv1987 2628 09/21/16 09:48 Is there a minlength validation attribute in HTML5? Поделиться сообщением Ссылка на сообщение
Strategius 52 09/21/16 11:04 (изменено) Добавил такой код в input: pattern='.{3,}' $html .= "<input type='text' pattern='.{3,}' placeholder='".$als_placeholder."' name='search_term' id='als_input' size='17' />";Но все равно результаты выдаются сразу после ввода первого символа... Изменено 21 сентября 2016 пользователем Strategius Поделиться сообщением Ссылка на сообщение
siv1987 2628 09/21/16 11:17 Для лайв поиска? $('#search_term').keyup(function(){ if(this.value.length >= 3){ page = 1; sendToSearch(page); } }); Поделиться сообщением Ссылка на сообщение
Strategius 52 09/21/16 11:47 Да, для лайв. Вообще перестало работать, не ищет с такой доработкой... Надо, чтобы искало после ввода трех символов, а теперь вообще не ищет( Поделиться сообщением Ссылка на сообщение