Перейти к содержимому
Русский язык для Invision Community 5

Быстрый поиск

Добрый вечер. Не подскажете, есть ли для тройки хук, добавляющий в стандартный поиск функцию ajax - т.е. отображение результатов поиска наподобие live поиска, в маленьком окне без нажатия кнопки поиска?

 

Как на этом сайте, к примеру. www.ivi.ru

Рекомендованные сообщения

  • Автор

Подскажите, пожалуйста, как доработать sql-запрос, чтобы поиск производился только по первой букве слов?

 

Например, ищу словосочетание "Медведь Плюшевый", ввожу в поле поиска букву "е" и мне выдается: "Медведь Плюшевый". А нужно, чтобы его можно было найти только по буквам "м" и "п"... Не подскажете?

Изменено пользователем Strategius

  • Автор

Код, отвечающий за вывод результата:

 

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

Изменено пользователем Strategius

AND title LIKE '%".$searchStrings[$i]."%'

заменить на

AND title REGEXP '[[:<:]]".preg_quote( $searchStrings[$i] )."'

 

AND title LIKE '%".$searchString."%'

заменить на

AND title REGEXP '[[:<:]]".preg_quote( $searchString )."'

  • Автор

Внес правки, но все равно почему-то не работает... Поиск выдает результаты по одной любой букве (не первой в словах), да и еще часть букв отсеклась и по ним поиск вообще не работает...

title LIKE '%".$searchStrings[0]."%'

тоже нужно заменить

  • Автор

На это?

title REGEXP '[[:<:]]".preg_quote( $searchStrings[0] )."'

Заменил, но тоже не работает...

Изменено пользователем Strategius

На всякий случай установите кодировку соединения с mysql

 

после

$als_select_db 	= mysql_select_db($INFO['sql_database'], $als_connect_db);

добавить

if($INFO['sql_charset']){
mysql_set_charset($INFO['sql_charset']);
}

  • Автор

Эффекта нет :( Даже без последней правки (и с ней тоже) выдает нулевой результат поиска... Может тогда просто ограничить запрос вводом хотя бы трех символов, чтобы облегчить задачу? Заодно и запрос к БД не будет таким тяжелым...

Изменено пользователем Strategius

Ограничивайте.

  • Автор

А как не подскажете, пожалуйста? Хотя это и не очень правильное решение, очень жалко, что по первым символам не работает :( В чем же все-таки проблема может быть?

  • Автор

Добавил такой код в input: pattern='.{3,}'

 

$html .= "<input type='text' pattern='.{3,}' placeholder='".$als_placeholder."' name='search_term' id='als_input' size='17' />";

Но все равно результаты выдаются сразу после ввода первого символа...

Изменено пользователем Strategius

Для лайв поиска?

 

	$('#search_term').keyup(function(){
		if(this.value.length >= 3){
			page = 1;
			sendToSearch(page);
		}
	});

  • Автор

Да, для лайв. Вообще перестало работать, не ищет с такой доработкой... Надо, чтобы искало после ввода трех символов, а теперь вообще не ищет(

this.length заменить на this.value.length

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.