Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Strategius

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

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

Вылез очень неприятный баг - а именно после ввода запроса (появляется анджакс-результат), и удаления его из строки, блок, выводящий результаты не исчезает :(

Нужная строчка в функции вроде присутствует:

 

$('#als_results').hide();

Всю голову уже сломал... Не ичезает и все, помогает только перезагрузка страницы. Помогите исправить этот баг, пожалуйста...

 

Оформил id-шник #als_results для визуализации бага: Ajax Live Search v1.3 for IP.Board v3.4.x.zip

Поделиться сообщением


Ссылка на сообщение
09/20/16 12:47 (изменено)

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
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);		
	}	

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

Поделиться сообщением


Ссылка на сообщение

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

заменить на

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

 

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

заменить на

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

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

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

Поделиться сообщением


Ссылка на сообщение
09/21/16 08:51 (изменено)

На это?

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

Поделиться сообщением


Ссылка на сообщение
09/21/16 09:29 (изменено)

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

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение
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' />";

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

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

Поделиться сообщением


Ссылка на сообщение

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

 

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...