Updated on April 30, 2016
I"m going to show you how to create simple search using PHP and MySQL. You"ll learn:
- How to use GET and POST methods
- Connect to database
- Communicate with database
- Find matching database entries with given word or phrase
- Display results
Preparation
You should have Apache, MySQL and PHP installed and running of course (you can use for different platforms or WAMP for windows, MAMP for mac) or a web server/hosting that supports PHP and MySQL databases.
Let"s create database, table and fill it with some entries we can use for search:
- Go to phpMyAdmin, if you have server on your computer you can access it at http://localhost/phpmyadmin/
- Create database, I called mine tutorial_search
- Create table I used 3 fields, I called mine articles.
- Configuration for 1st field. Name: id, type: INT, check AUTO_INCREMENT, index: primary
INT means it"s integer
AUTO_INCREMENT means that new entries will have other(higher) number than previous
Index: primary means that it"s unique key used to identify row
- 2nd field: Name: title, type: VARCHAR, length: 225
VARCHAR means it string of text, maximum 225 characters(it is required to specify maximum length), use it for titles, names, addresses
length means it can"t be longer than 225 characters(you can set it to lower number if you want)
- 3rd field: Name: text, type: TEXT
TEXT means it"s long string, it"s not necessary to specify length, use it for long text.
- Fill the table with some random articles(you can find them on news websites, for example: CNN, BBC, etc.). Click insert on the top menu and copy text to a specific fields. Leave "id" field empty. Insert at least three.
It should look something like this:
- Create a folder in your server directory and two files: index.php and search.php (actually we can do all this just with one file, but let"s use two, it will be easier)
- Fill them with default html markup, doctype, head, etc.
- Create a form with search field and submit button in index.php, you can use GET or POST method, set action to search.php. I used "query" as name for text field
GET - means your information will be stored in url (http://localhost/tutorial_search/search.php?query=yourQuery
)
POST - means your information won"t be displayed it is used for passwords, private information, much more secure than GET
Ok, let"s get started with php.
- Open search.php
- Start php ()
- Connect to a database(read comments in following code)
< to > $query = mysql_real_escape_string($query); // makes sure nobody uses SQL injection $raw_results = mysql_query("SELECT * FROM articles WHERE (`title` LIKE "%".$query."%") OR (`text` LIKE "%".$query."%")") or die(mysql_error()); // * means that it selects all fields, you can also write: `id`, `title`, `text` // articles is the name of our table // "%$query%" is what we"re looking for, % means anything, for example if $query is Hello // it will match "hello", "Hello man", "gogohello", if you want exact match use `title`="$query" // or if you want to match just full word so "gogohello" is out use "% $query %" ...OR ... "$query %" ... OR ... "% $query" if(mysql_num_rows($raw_results) >
".$results["title"]."
".$results["text"].""; // posts results gotten from database(title and text) you can also show id ($results["id"]) } } else{ // if there is no matching rows do following echo "No results"; } } else{ // if query length is less than minimum echo "Minimum length is ".$min_length; } ?>Done!
Now it works. Try different words, variations, editing code, experiment. I"m adding full code of both files in case you think you"ve missed something. Feel free to ask questions or ask for tutorials.
index.php
search.php
".$results["title"]."
".$results["text"].""; // posts results gotten from database(title and text) you can also show id ($results["id"]) } } else{ // if there is no matching rows do following echo "No results"; } } else{ // if query length is less than minimum echo "Minimum length is ".$min_length; } ?> 11.1KОдна из самых популярных и необходимых функций на любом сайте – это поиск, реализованный с помощью специальной формы. Этот функционал позволяет посетителям быстро находить на сайте интересующий их контент.
Сегодня мы хотим рассказать, как сделать поиск по сайту с помощью специальной формы, которая будет опрашивать таблицы базы данных и выводить информацию о текущих руководителях на сайте. Вы научитесь создавать таблицы базы данных, которая будет содержать в себе информацию о текущем персонале.
Разрабатывать формы поиска при помощи PHP , а также познакомитесь с SQL (Structured Query Language ) – специальным языком для сбора, записи и модификации информации, содержащейся в базах данных. Перед тем как начать, рекомендуем вам скачать файлы проекта .
Что вам понадобится
- Инструмент для работы с базами данных MySQL .
- Локальный или удаленный сервер с поддержкой PHP .
- Текстовый редактор.
Создаем базу данных
Если вы не совсем уверены, что сможете разобраться с базой данных на вашем хостинге, то свяжитесь с хостером для получения соответствующих инструкций или помощи. После того как база данных будет создана, вам нужно будет подключить ее, создать таблицу и записать в нее необходимые данные.
Самым популярным инструментом для управления MySQL является PHP My Admin , Этого инструмента будет достаточно для нашего сегодняшнего руководства.
Создание таблицы
Наша таблица должна быть создана в следующем формате:
Column Name | Data Type | Length | Null or Not Null | Primary key? | Auto Increment |
ID | INT | 1 | Not Null | Yes | Yes |
FirstName | Varchar | 50 | Not Null | No | No |
LastName | Varchar | 50 | Not Null | No | No |
Varchar | 50 | Not Null | No | No | |
PhoneNumber | Varchar | 15 | Not Null | No | No |
Таблица базы данных состоит из столбцов и строк, как в Excel . Первый столбец позволяет идентифицировать данные по имени. Далее идет колонка Data types (тип данных ), которая указывает нам на тип данных, содержащихся в колонке. В поле Length (Длина ) указывается максимальный объем памяти (хранилища ) для столбца таблицы. Мы используем переменные, которые дают больше гибкости. Другими словами, если длина ФИО меньше 50 символов, то будет занята лишь часть отведенного места.
И среди данных персонала не может быть пустых значений (null, empty ). Первая строка выделена желтым цветом, потому что столбец ID – наш основной ключ. Основной ключ в базе данных гарантирует, что каждая запись будет уникальной. К этой колонке также применен автоинкремент, а это значит, что каждой записи в нашей базе данных будет присваиваться уникальный номер автоматически.
Вносим представителей персонала в таблицу
Как только разберетесь с таблицей, начните заполнять ее данными. 6 записей вполне достаточно, чтобы закрепить в уме процедуру. Ниже предлагаю вам собственный пример:
Column ID | FirstName | LastName | PhoneNumber | |
2 | Ryan | Butler | [email protected] | 417-854-8547 |
3 | Brent | Callahan | [email protected] | 417-854-6587 |
Разработка формы
Чтобы создать форму поиска по сайту через Google , откройте любой подходящий текстовый редактор. Я рекомендую воспользоваться бесплатным PSPad . Вы можете использовать любой текстовый редактор, где предусмотрена подсветка синтаксиса. Это в значительной степени облегчит процесс написания и отладки PHP-кода . Создавая страницу для формы поиска, не забудьте сохранить ее в формате .php , иначе PHP-код не будет обрабатываться должным образом. Как только сохраните документ, скопируйте в него следующую разметку:
Детальный поиск контактов
Вы можете искать по имени или фамилии
Если вы знакомы с языком HTML , то тут вам все должно быть понятно как минимум до открывающего тега form . Внутри этого тега находится важнейший элемент всего кода – атрибут action . В качестве действия нашей формы мы указали название нашего файла, а затем применили к нему строку запроса “go ”.
Проверка на соответствие критерию
Когда пользователь вводит имя или фамилию, а затем нажимает кнопку подтверждения, форма передает данные самой себе и добавляет в конце строку запроса “go ”. На данном этапе мы проверяем наличие строки запроса go . Если результат положительный, выводим результаты поиска.
До вывода запрашиваемых результатов нам нужно перепроверить: (1) была ли подтверждена форма, (2) содержит ли строка запроса значение go, (3) был ли поисковой запрос введен в нижнем или верхнем регистре? Если ни одна из проверок не дает положительного результата (true ), то от нас не требуется выполнять какие-либо действия.
Для начала добавим небольшой блок кода PHP поиск по сайту после закрывающего тега :