<MyRusakov.ru />

Написание лайфхаков на Python

Написание лайфхаков на Python

Данный курс научит Вас автоматизировать самые разные задачи на языке Python, благодаря чему Вы сэкономите на рутине тысячи и тысячи часов своей жизни. Курс состоит из 20 примеров в различных областях: файлы и директории, медиа-файлы, Интернет, Web-мастеринг, Unreal Engine. Каждый пример упрощает ту или иную задачу в своей области, при этом каждый из них создаётся прямо на Ваших глазах и тщательно комментируется.

Помимо самих уроков Вы так же получаете и множество упражнений. По сути, Вы создадите свои собственные 20 небольших проектов, благодаря чему у Вас появится и практика, и портфолио.

Подробнее
Подписка

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

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Зачем Вы изучаете программирование/создание сайтов?

Видеоурок по реализации поиска на сайте

Видеоурок по реализации поиска на сайте

Почти на каждом сайте имеется поиск. И практически всегда там стоит какой-нибудь сторонний скрипт, что, на мой взгляд, не очень хорошо. Во-первых, я это знаю, потому что перебрал несколько десятков различных скриптов. Ни один из них мне не подошёл по самым разнообразным причинам, а, во-вторых, чужой код - это всегда потёмки, а я привык контролировать ситуацию полностью. Поэтому мне пришлось сделать свой скрипт поиска по сайту. Фактически, в этом видеоуроке мы реализуем поиск на сайте, который будет очень близок к моему. Я постараюсь всё тщательно и подробно объяснить и разъяснить. А так как в большинстве случаев контент сайта хранится в базе данных, то и в видеоуроке поиск будет вестись непосредственно в ней.

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

Скачать видеоурок в отличном качестве можно по этой ссылке (45.1 МБ): скачать видеоурок. Запускать надо файл index.html

Скачать исходники к уроку: скачать исходники.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (56):

top1995 top1995 25.07.2011 02:25:29

Спасибо

Ответить

Zhilya Zhilya 05.02.2012 22:28:16

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

Ответить

Admin Admin 05.02.2012 22:30:39

Про выборку из нескольких таблиц сразу: http://myrusakov.ru/sql-select-several.html Про навигацию по страницам: http://myrusakov.ru/php-page-navigation.html

Ответить

dallbill dallbill 08.05.2012 19:12:16

вот строчка у вас echo $results[$i]["title"]; выводит только название статьи. Мне нужно сделать чтобы выводило все поля которые есть в базе! пишу так echo $results[$i]["fio"] выводит фамилию, пишу echo $results[$i]["rbook"] номер зачетки не выводит... что не так? может быть это в запросе еще нужно искать по номеру зачетки или как? но в результате поиска вот такая строка Array ( [0] => Array ( [id] => 1 [scard] => 820601-01 [rbook] => A0255665 [fio] => Аврамчиков Андрей Викторович [stage1] => 54 [stage2] => 67 [stage3] => 89 [result] => 34 [tem] => ) )

Ответить

Admin Admin 08.05.2012 19:36:24

У Вас и так выводятся все поля в массив, а уже как выводить из массива Вы знаете. И в чём проблема?

Ответить

pavel555 pavel555 12.09.2012 14:21:09

Здраствуйте Михаил.Все делал по Вашему уроку но возникают ошибки Cannot instantiate non-existent class:mysqli.а кагда меняю подключение к базе на вот такую команду mysql_connect то выскакивает ощибка Call to a member function on a non-object помогите разобраться.

Ответить

Admin Admin 12.09.2012 14:34:53

Проверьте что php_mysqli.dll подключен в конфиге.

Ответить

mischa.samolkaev mischa.samolkaev 11.11.2012 18:07:30

А почему вы перебираете массив полученный explode() конструкцией foreach, а массив ответа for? (Мне кажется все через for надо елать)

Ответить

Admin Admin 11.11.2012 18:53:42

Без разницы, какой цикл использовать. foreach покороче, поэтому его там и использовал. А для перебора result_set я всегда использовал только while, уже давно привык.

Ответить

mischa.samolkaev mischa.samolkaev 11.11.2012 18:57:06

Помоему for быстрее

Ответить

Admin Admin 11.11.2012 19:00:49

Да, на 2-3% быстрее, но зато запись короче на 30%, а вообще не в этом дело, это как руки напечатают, так и будет.

Ответить

ppk-center ppk-center 01.12.2012 20:03:59

Пожалуйста сделаете видеоурок о поииске не по базе, а по страницам.

Ответить

malina95 malina95 20.01.2013 01:51:31

Михаил, а как можно сделать подсветку поискового слова? Пробую так return str_replace($words, "<span style = 'color: red; font-weight: bold;'>".$words."</span>", $results); но не выходит, и через preg_replace пробовал, тоже никак

Ответить

Admin Admin 20.01.2013 10:54:38

$results = str_replace(...);

Ответить

gjlevfnmnjkmrj1 gjlevfnmnjkmrj1 29.01.2013 01:16:09

Михаил подскажите. Почему текст который выводится с БД у меня не сайте отображается в виде знаков вопроса (http://s52.radikal.ru/i135/1301/6c/2435a5313438.png). Кодировки в БД следующие: (http://s019.radikal.ru/i618/1301/f7/110bdad01335.png) и со вкладки операции (http://s017.radikal.ru/i400/1301/45/1391aa0e801f.png)

Ответить

Admin Admin 29.01.2013 09:45:14

http://myrusakov.ru/php-encoding-problems.html

Ответить

gjlevfnmnjkmrj1 gjlevfnmnjkmrj1 29.01.2013 14:31:52

Прочитал статью и сделал все так как там написано. Перекодировал как написано во 2 причине (нечего не изменилось), добавил макрос mysql_query("set names utf8"); (ничего не изменилось). добавил файл .htaccess в корне сайта и тут кракозяблы просто изменились на другие (http://s017.radikal.ru/i413/1301/d4/68451998183f.png)

Ответить

Admin Admin 29.01.2013 20:25:52

Чудес не бывает. Сотни людей прошли через эту статью, я уже сотню сайтов точно создал, и никогда не выходил за пределы того, что там написано. Там всё, что нужно. Ищите ошибку, смотрите, какую кодировку выставляет браузер, сравнивайте с кодировкой документа, проверяйте 1000 раз, что написано в .htaccess, проверяйте все поля в таблицах (а не просто одну кодировку таблицы) и так далее.

Ответить

gjlevfnmnjkmrj1 gjlevfnmnjkmrj1 13.02.2013 00:55:41

Видать чудеса бывают. Уже не знаю что делать... Статья не помогла, пробовал сменить Денвер на другие сборки эффект не изменился, а браузер выставляет как надо UTF-8. Но вот что ещё интересно. Отправил знакомому (который у себя на компьютере загрузил мою БД и Сайт) и на удивление у него всё нормально отображается. Что посоветуете?

Ответить

gjlevfnmnjkmrj1 gjlevfnmnjkmrj1 23.02.2013 15:14:11

Обнаружил способ как решить проблему... Просто убрал галочку с пункта "SUPER" при выборе привилегий для пользователя.Так как в том случае, если помимо прочих привилегий для пользователя будет отмечена привилегия SUPER, то кодировка, установленная по умолчанию в настройках MySQL сервера, не будет на него действовать.

Ответить

Admin Admin 23.02.2013 15:29:56

А если сразу после подключения отправить запрос SET NAMES 'UTF-8' или SET NAMES 'CP1251'? Попробуйте, только обязательно верните SUPER. И не фантазируйте про SUPER, всегда он у меня стоит, но при этом никогда подобных проблем с кодировкой не было.

Ответить

gjlevfnmnjkmrj1 gjlevfnmnjkmrj1 23.02.2013 16:21:02

А какие могут быть последствия при отмене SUPER?

Ответить

Admin Admin 23.02.2013 21:12:47

Никаких принципиальных привилегий она не даёт, просто её никто никогда не отключает. И ещё никому она не мешала сделать нормальную кодировку. Раз Вы решили эту проблему, поздравляю, но не фантазируйте на тему связи SUPER и проблем с кодировкой. Если всё делать, как я писал в статье, то ещё ни у кого проблем не было.

Ответить

7418292 7418292 06.02.2013 15:22:26

Здравствуйте. Подскажите, почему при поиске данных которых нету в БД мне выводит как и надо "Ничего не найдено". Но при этом ещё выдает ошибку Notice: Undefined variable: results in C:\wamp\www\test.ru\index.php on line 31 Вот мой ссылка на мой php код и скриншот ошибки http://dfiles.ru/files/9ku6etu08 В строке №31 как и у вас находится return $results;

Ответить

Admin Admin 06.02.2013 18:42:47

http://myrusakov.ru/php-error-reporting.html

Ответить

7418292 7418292 07.02.2013 02:23:27

Вы хотите сказать что мне стоит просто отключить вывод данной ошибки?

Ответить

Admin Admin 07.02.2013 08:10:08

Это не ошибка. А если так хочется, то можете написать в начале скрипта $results = false;

Ответить

Сreed1 Сreed1 20.02.2013 21:53:34

Здравствуйте а где можно найти исходник вашего сайта по вашему курсу ОТ А до я?

Ответить

Admin Admin 20.02.2013 22:51:22

Их нет.

Ответить

phoenix712 phoenix712 06.03.2013 23:20:47

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

Ответить

TuMc TuMc 11.04.2013 09:54:16

а как правильно проставить ссылки? Чтобы эти заголовки вели на полную статью? Спасибо!

Ответить

Admin Admin 11.04.2013 12:18:03

Например, поставить ссылки такие: article.php?id=5, при переходе на которую выводится весь текст статьи с id=5.

Ответить

TuMc TuMc 11.04.2013 16:44:51

вывел после for вот это: echo '<a href="'.$site_url.'articles.php?category_id='.$row_search['article_id'].'">'.$results[$i]['title'].'</a><br />'; не работает..id всех статей = 1.. вот запрос: $res_search = mysql_query("SELECT * FROM `articles`") or die(mysql_error); $row_search = mysql_fetch_assoc($res_search); Подскажите плиз в чем дело?

Ответить

Admin Admin 11.04.2013 20:59:39

.$row_search['article_id'].'" - здесь тоже [$i] нужен.

Ответить

TuMc TuMc 11.04.2013 23:39:14

а можете расписать подробней? [$i] вместо ['article_id']??

Ответить

Admin Admin 12.04.2013 11:41:54

$row_search[$i]['article_id'].'"

Ответить

maxlegostaev0595 maxlegostaev0595 13.05.2013 23:28:52

Михаил, подскажи а как сделать что бы выводился не только title, но и сылка на это статью. Дополните ваш урок. ЗА ранее спасибо.

Ответить

morozov-semen morozov-semen 17.05.2013 18:57:41

Огромное спасибо. Очень полезная информация.

Ответить

7418292 7418292 25.06.2013 01:49:25

Здравствуйте Михаил. Я хотел бы попросить вас в небольшое объяснение по данному видео. А именно с какой целью вы на 6 минуте и 55 секунде преобразовываете resault_set в двумерный массив. Я понимаю что вопрос для вас прозвучал глупо. Но я не могу понять с какой целью это делается... Даже не представляете как буду вам благодарен если вы немножко подробней мне объясните.

Ответить

Admin Admin 25.06.2013 10:38:37

Потому что result_set - это не те данные, которые можно просто взять и использовать. Перед этим их нужно преобразовать в понятный тип данных, а именно массив, с которым уже можно работать.

Ответить

7418292 7418292 25.06.2013 10:40:02

А какой примерно вид имеет эта переменная до преобразования?

Ответить

Admin Admin 25.06.2013 10:43:00

Никакой, чтобы можно было с ним сразу работать.

Ответить

7418292 7418292 25.06.2013 10:44:00

Спасибо вам большое

Ответить

whaitte whaitte 26.07.2013 16:26:32

Здраствуйте, а возможно ли в этом скрипте сделать так чтоб он искал по 2м полям, к примеру: <select name="marka"> <option value="0">Любая фирма</option> </select> <select name="model"> <option value="0">Любая модель</option> </select> Если возможно то как впихнуть туда 2е имя поля?

Ответить

Admin Admin 26.07.2013 20:03:16

Можно, но тогда придется менять код. У нас получатся две выборки из базы.

Ответить

Инкогнито Инкогнито 18.09.2013 15:44:03

<?php function search($words) { $words = htmlspecialchars($words); if ($words === "") return false; $query_search = ""; $arraywords = explode(" ", $words); foreach($arraywords as $key => $value) { if (isset($arraywords[$key - 1])) $query_search .= ' OR '; $query_search .= '`title` LIKE "%'.$value.'%" OR `text_article` LIKE "%'.$value.'%"'; } $query = "SELECT * FROM articles WHERE $query_search"; $mysqli = new mysqli("123", "123", "123", "123"); $result_set = $mysqli->query($query); $mysqli->close(); $i = 0; while($row = $result_set->fetch_assoc()) { $results[$i] = $row; $i++; } $result_set->close(); return $results; } if (isset($_POST['bsearch'])) { $words = $_POST['words']; $results = search($words); } ?> помогите найти ошибку, при пустом запросе все хорошо, при любом другим пишет Call to a member function fetch_assoc() on a non-object in

Ответить

Admin Admin 18.09.2013 19:57:56

http://myrusakov.ru/php-fetchassoc.html

Ответить

firs firs 22.03.2014 10:09:29

Здравствуйте. 1. Как ограничить поиск минимум по 3 буквам, а то ищет даже одну букву и естественно выводит все записи из базы? 2. Как реализовать чтобы поиск шел по целым словам, например: если искать ВОТ, то будет найден жиВОТные, а хотелось бы чтобы искались целые слова? Заранее благодарен.

Ответить

prog prog 28.04.2014 09:10:46

У меня на сайте есть session_start(); Он нужен для изменения языка на сайте.Я создал поиск по вашим урокам, но у меня выводится сообщение "Подтвердить повторную отправку формы" как этого избежать.Как можно убрать сессию отдельно для поиска?

Ответить

alexandrdante alexandrdante 28.04.2014 17:08:35

закрывайте сессию раньше)

Ответить

prog prog 28.04.2014 18:18:52

А как закрыть такую сессию session_start(); if(empty($_GET['view'])) $view = 'index'; else $view = $_GET['view']; if($_SESSION['lang'] == '') { $lang = 'kz'; $_SESSION['lang'] = $lang; } else $lang = $_SESSION['lang']; if(isset($_POST['change_lang'])) { change_lang($_POST['lang']); header("Location: index.php?view=".$view); }

Ответить

tikkiwiki tikkiwiki 29.04.2014 11:13:38

Используйте session_destroy ();

Ответить

alexku80 alexku80 09.06.2014 23:17:40

Ребята выручайте, весь вечер убил, не могу найти ошибку, до 17 мин все делал по видео запустил проверку, выводит:Fatal error: Call to a member function fetch_assoc() on a non-object in D:\OpenServer\domains\uploadsearch\search_form.php on line 22 Строка запроса без ошибок : $query_search .= ' `img` LIKE "%'.$value.'%" OR `description` LIKE "%'.$value.'%"';

Ответить

akhotnick93 akhotnick93 11.03.2015 23:33:54

Уважаемый Михаил Русаков я уже третий раз посмотрю ваш видео урок но все равно не могу найти ошибку когда идет до функ. fetch_assoc тут уже ошибка!

Ответить

SkAiNeT SkAiNeT 21.11.2015 12:10:06

Здравствуйте,я тоже уже сотый раз пересматриваю , но никак не понимаю в чем ошибка. даже исходник скачал , все равно. Fatal error: Call to a member function fetch_assoc() on a non-object in Z:\home\search\www\index.php on line 19

Ответить

dronnord92 dronnord92 15.02.2016 12:45:16

Видеокурс по изучению HTML и CSS http://glopages.ru/affiliate/7021397

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.