Бесплатное в сети!
Age-Dragon.com
» » Скрипт поиска по сайту

Скрипт поиска по сайту

поиск по сайту

Выставляю для ознакомления три варианта скрипта поиск по сайту на java, php и xml, любой из которых можно смело применить для любых ваших сайтов.

Во всех вариантах скрипта поиска по сайту html отсутствует кнопка "Найти" и исключается перезагрузка страниц, где вывод результатов поиска происходит посредством ajax сразу на глазах посетителей.

У каждого варианта поиска есть свои плюсы и недостатки, но в одном они все одинаковы: создали статью и сразу прописали сами результаты для поиска, потому как функционал скрипта построен на поиске из записанного, а не на поиске информации по всему вашему сайту.

И давайте рассмотрим все примеры подробно с пошаговыми действиями для установки каждого из них на сайт.

Первый вариант поиска по сайту с БД.

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

Ещё одним плюсом является подсветка найденных слов (букв) в результате поиска.

Недостатком является один факт - если прописывать в таблице БД адрес страницы из другой категории, то есть к примеру вот так: cat/page.html то при переходе по этому адресу из результатов поиска браузер выдаёт ошибку. А связано это с тем, что обработчик экранирует подобные символы, то есть превращает в html сущности.

Вы поймёте о чём речь, когда установите этот скрипт поиска и начнёте его опробовать в работе.

Первый вариант скрипта поиска взаимодействует с Базой данных и давайте сразу приступим к её заполнению.

Скачайте ниже архив со скриптом поиска для сайта и залейте всё содержимое на хостинг.
Далее создайте БД с именем poisk_test и сравнение utf8_general_ci. После нажмите на созданную базу и в верхнем меню кликните кнопку SQL и в появившееся окно вставьте скопированный код из файла BD.sql и затем нажмите ОК.

Всё, готово! Открывайте ваш сайт в браузере и проверяйте работу скрипта поиска по сайту, а уже после замените всё необходимое в таблице MySQL на своё.

Важно!
Когда будете менять в поиске на свои: текст и URL адреса, то в файле search.php не забудьте заменить ссылку на свой домен. И здесь же вы можете подправлять html код для вывода результатов поиска.

  Скачать скрипт поиска по сайту 1-ый вариант

Ссылка на файл: poisk_1.zip

Второй вариант поиска по сайту с БД.

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

И к недостаткам можно отнести то, что при поиске на латинице, скрипт ищет совпадения в адресе ссылки, потому как в этом примере адресные ссылки полностью прописываются в БД.

Для установки этого скрипта поиска по сайту сделайте такие же действия, как и в предыдущем примере, только файл search.php трогать уже не нужно.

  Скачать скрипт поиска по сайту 2-ой вариант

Ссылка на файл: poisk_2.zip

Третий вариант поиска по сайту на xml без БД.

Отличительной особенностью последнего примера поиска для сайта является тот факт, что он не использует Базу Данных, а работает по сайту на основе xml, в котором и прописываются все запросы для поиска на вашем сайте.

Для его установки достаточно залить все файлы скрипта на сервер, поменять в том же файле links.xml на ваши поисковые запросы и поиск на сайте сразу будет функционировать в полном объёме.

  Скачать скрипт поиска по сайту 3-ий вариант

Ссылка на файл: poisk_3.zip

Комментарии 22
Елена
5 августа 2018 10:13
Елена

Скрипты поиска добротные, как раз для не больших сайтов html то что нужно, спасибо!
Подскажите, как можно сделать, чтобы результаты поиска по сайту начинали выводиться при вводе не менее 2 или 3 букв.
Заранее, благодарна!

Читать полностью
5 августа 2018 11:35
Admin

Елена,
Это конечно не удобно, и я сделал таким поиск для наглядного примера работы скриптов.
Чтобы указать минимальное значение букв для вывода результатов поиска, необходимо сделать одно изменение для всех примеров приведённых на сайте.

Первый вариант - файл search.php, строка: if (strlen($search_string) > 1
Второй вариант - файл search.js, строка: if(this.value.length >= 1)
Третий вариант - файл livesearch.php, строка: if (strlen($q)>1)

Замените цифру 1 на любую другую.

Читать полностью
Елена
6 августа 2018 17:18
Елена

Admin,
Понятно, спасибо )))
А не подскажите ещё, - какой всё-таки лучше скрипт поиска использовать для сайта из ваших примеров?
Вы же наверняка уже для себя выявили наилучший вариант.

Читать полностью
6 августа 2018 20:21
Admin

Елена,
Как и писал в статье, - я использовал раньше на сайте 1 вариант поиска, но когда столкнулся с ними конкретно выставляя их на сайт, то отдал бы предпочтение всё же 3-му варианту.

Поясню: с 1-ым примером у меня всё-таки были проблемы - не совместимость java скриптов, и пришлось поиск выводить в модальном окне.
Со вторым вариантом нужно иметь навыки программирования ( как и писал выше ) для внедрения своих нужд.
Ну и последний пример поиска оказался самым лёгким, простым и надёжным поиском по сайту на основе xml.

Читать полностью
Александр
8 августа 2018 18:47
Александр

Здравствуйте.
не подскажите, как ограничить число вводимых букв в поисковой строке?

Читать полностью
8 августа 2018 20:36
Admin

Александр,
Добрый вечер!
Для ограничения вводимых букв добавьте в input вот это: maxlength="9", где цифра и будет указывать на максимально допустимое количество знаков.

Читать полностью
Александр
9 февраля 2019 12:29
Александр

Здравствуйте.
В третьем варианте скрипта поиска по сайту есть небольшой недостаток, у Вас в Демо он тоже проявляется.
Не работает поиск если пользователь будет вводить заглавными буквами или при нажатом Capslocke.
Подскажите пожалуйста, как его устранить.

Читать полностью
11 февраля 2019 13:01
Admin

Александр,
Добрый день!
Вообще, - это редкий случай, когда при поиске ставят заглавные буквы, и ещё реже, - когда включают Capslocke.
Поэтому этот недостаток можно игнорировать.
---

Я доработал скрипт поиска в этом плане ( заглавные буквы ).

Изменения для input:

<input ... onkeyup="tolowcase(this),showResult(this.value)" ...>

Добавить скрипт перед </body>:

<script type="text/javascript">
function tolowcase(element){
 var str = element.value;
 var res = str.toLowerCase();
 element.value = res;
}
</script>

Читать полностью
Александр
13 февраля 2019 14:38
Александр

Здравствуйте.
Capslock может случайно быть включенным.
А если сделать чтобы вместе с первой вводимой в поле поиска буквой сразу вводился пробел перед ней, ну и соотвеиственно в title файла links.xml тоже сделать пробелы перед первым словом в строке, то этому поиску цены бы не было.

Читать полностью
Александр
16 февраля 2019 11:29
Александр

Здравствуйте.
Этот скрипт добавляет пробел перед запросом в поиске.


<script>
 var a=0;
 search.poisk.onkeypress=function(){if(a==0){a=0;search.poisk.value+=" ";}a++;}
</script>

Полю поиска и <form> надо указать name:
<form name="search">
 <input type="text" class="who" placeholder="Поиск по сайту" name="poisk" onkeyup="tolowcase(this),showResult(this.value)" value="" />
 <div id="livesearch"></div>
</form>

Но у этого скрипта есть небольшой недостаток, при повторном вводе, если перед этим был стёрт весь текст вместе с пробелом - пробел автоматом уже не добавляется и начинает добавляться только после обновления страницы.


Даже сейчас поиск стал удобнее - релевантнее, теперь не учитываются вводимые буквы, если они находятся в середине слова, а только первые, а это важно при большом списке в links.xml.
Конечно можно, как писали в комментариях выше, поставить минимальное количество букв, например 3—4, но вылезающая подсказка «Нет совпадений» сбивает немного с толку ... — отключать её не хочется, да и 3—4 буквы тоже могут оказаться в середине слов.
Буду признателен Вам, если подправите этот скрипт, чтобы всегда вводился пробел.

Читать полностью
16 февраля 2019 14:18
Admin

Александр,
Привет!
Мне кажется, что оптимальным как раз вариантом остаётся поставить при поиске мин. значение букв 4-5.
При этом значение найти совпадение в середине слова очень мизирное, так как поиск происходит в заголовках, а не в киломметровом тексте, где совпадений может быть действительно масса.
---
Либо на худой конец, - сделать поправку в самом скрипте поиска, чтобы начинал искать только совпадения с начала слова, а не где попало.

Читать полностью
Александр
24 февраля 2019 18:40
Александр

Добрый день.
Только сегодня случайно обнаружил.
Третий вариант поиска не работает в IE-11, в других браузерах работает.
Подскажите пожалуйста, в чём может быть причина?

Читать полностью
24 февраля 2019 18:57
Admin

Александр,
Здравствуйте!
IE - это самый проблематичный из всех браузеров, и разработчики скрипта поиска скорее всего не удосужились доработать его для этого браузера.
Здесь я вам ничем помочь не могу.
---
Единственное утешу - не берите в голову этот факт.
Этим браузером пользуются единицы и не стоит из-за этого заморачиваться)))

Читать полностью
Михаил
13 марта 2019 01:04
Михаил

Подскажите, как в 3 примере скрыть элемент livesearch при клике за его пределами, а то результаты продолжают отображаться если пользователь начал вводить, но не выбрал пункт.

 

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

Читать полностью
15 марта 2019 14:49
Maska

Присоединяюсь к Михаилу, нужен сброс поля при клике вне поля поиска ( т.е. на поле сайта - "КЛИК" ) или необходим крест сброса поля.

 

Admin 16.02.19 писал:

"Мне кажется, что оптимальным как раз вариантом остаётся поставить при поиске в 3-ем варианте мин. значение букв 4-5."

 

При изменении if (strlen($q)>3) Список выводиться на 4 (четвертой) букве, это верно,
а нет совпадений при этом алгаритме, все равно выбрасывается на 1 (первой) букве.


__Мой вопрос__: - Можно сделать что бы нет совпадений появлялось на 3-4 букве?

В целом перепробовал много скриптов, это ОЧЕНЬ ЗАСЛУЖИВАЕТ ВНИМАНИЯ!
Да и отклик на поддержку очень быстрый!

Читать полностью
15 марта 2019 19:41
Admin

Maska,
Выделил время ( стало самому интересно ) и выявил ошибку в скрипте поиска ( 3 вариант ).
Дело в том, что в условие if (strlen($q)>3) не одинаково считывает символы для латиницы и кириллицы ( русские буквы ). То есть для латиницы это будет 1 знак, а для кириллицы 3 знака.
Для этого делаем поправку!


Открываем файл: livesearch.php


// После этой строки
 $q=$_GET["q"];

// Добавляем
 mb_internal_encoding("UTF-8");

// Находим
 if (strlen($q)>=3) {

// И заменяем на
 if (mb_strlen($q)>=3) {

// Находим в самом низу
 if ($hint=="") {$response

// И заменяем на
if ( $hint == "" && ( mb_strlen($q)>=3 )) {$response

 

Пояснения:
mb_internal_encoding("UTF-8"); и mb_strlen - уровняли количество знаков для латиницы и кириллицы;
if (strlen($q)>=3) - ставим желаемую цифру, после которой будет осуществляться поиск;
if ( ($hint=="") and ((mb_strlen($q)>=3)) ) - ставим желаемую цифру, после которой начнёт показываться НЕТ СОВПАДЕНИЙ.

 

Вопрос по закрытию результатов поиска при клике

1. Добавьте для input индификатор id="my_input"

2. После input добавьте кнопку:

<button id="clearButt" title="Очистить поиск">x</button>

 

3. Допишите внизу скрипта ( комментарий от 11 февраля 2019 13:01 ):


<script type="text/javascript">
function tolowcase(element){
 var str = element.value;
 var res = str.toLowerCase();
 element.value = res;
}

// Дописать
document.getElementById("clearButt").onclick = function(e){
 document.getElementById("my_input").value = "";
}
</script>

Читать полностью
15 марта 2019 21:56
Maska

Можно последнее:
- можно сделать поиск на русском и английском одновремменно?
- если нет, то как переходить на английский язык?
Спасибо за работу!!!!

Читать полностью
15 марта 2019 22:07
Admin

Maska,
Поиск работает как на русском, так и на английском языках.

В файле links.xml сделайте просто дублирование ссылок, где в <title> пропишите текст на английском.

Читать полностью
16 марта 2019 13:04
Maska

Admin, Спасибо вам за работу!!!!
А в строке <title> нельзя писать в одной строке анг. и рус. слова? Просто я не совсем знаю принцип работы скрипта.

Еще один момент:
1. Если  в <title> написать анг. слово с заглавной буквой, то оно находится скриптом. Пример ( Sika )
2. Если  в <title> написать рус. слово с заглавной буквой, то слово не находиться. Пример: ( Клей )

а это очень важный момент для товаров. Поправте если получится.

 

СКРИПТ БЛЕСК!!!!!!!!!!!!!!!!! Получается.
Может вы его исправленным целеком выложите, что бы исключить ошибки.
Спасибо за хорошую работу!!!!!

Читать полностью
16 марта 2019 14:16
Admin

Maska,
1. В <title> можно разумеется писать анг. и рус. слова одновременно, и поиск будет осуществляться по всем словам.
2. Зачем вам писать в <title> с заглавных букв? Ведь этот заголовок используется только для поиска ( не усложняйте себе жизнь ).
Другое дело, если идёт автоматом подстановка в <title> из Базы данных, вот тогда нужно будет обдумать этот момент.
3. Я предоставляю всегда для скачивания, как и любой другой скрипт, - только в исходном состояние от разработчика. Кому действительно нужно, тот по комментариям внедрит желаемые поправки.

Читать полностью
17 марта 2019 00:11
Maska

Загрузку 3 варианта скрипта поиска нужно изменить, скачивается старый вариант (если я не ошибся).

Читать полностью
17 марта 2019 00:27
Admin

Maska,
Я в загрузках ничего и не менял, и не собирался, - читайте предыдущий комментарий.

Читать полностью
Добавить комментарий