Разное - Несколько вопросов по PHP

Аватара пользователя
Igor_I

Re: Разное - Несколько вопросов по PHP

Сообщение Igor_I »

Цитата ManHack:



Для начала, как данные, забитые в форму, отдать PHP файлы (записать в указанную переменную в php-файле, для определённости, в $data)
Разное - Несколько вопросов по PHP






HTML код:



Жмёте кнопку "отправить" и скрипт script.php получает переменную $_GET['data'], содержащую то, что написано в текстовом поле.


Цитата ManHack:



И я всё-равно не понимаю как организовать поиск по БД, если в формочку вводится строка с несколькими параметрам, по которым должен выполняться поиск, причём в совершенно неопределённом порядке.
Разное - Несколько вопросов по PHP




Вопрос немного размытый.

Вот, например, ввели мы эту $_GET['data']. Нужно выполнить поиск по таблице table_name[/i] по полю name:



PHP код:

Код: Выделить всё

$result = mysql_query("SELECT * FROM `table_name` WHERE `name` LIKE '%" . $_GET['data'] . "%'"); 



Аватара пользователя
ManHack

Re: Разное - Несколько вопросов по PHP

Сообщение ManHack »

1 Рисуешь формочку

2 В параметре action ставишь нужный php-файл. action="getforma.php"

3 Это пока весь getforma.php



PHP код:

Код: Выделить всё

echo 'var_dump ($_POST) = '.var_dump ($_POST);

echo 'var_dump ($_GET) = '.var_dump($_GET); 






4 Как искать по базе -

http://www.mysql.ru/docs/man/String_...functions.html


http://dev.mysql.com/doc/refman/5.0/...functions.html


http://habrahabr.ru/blogs/mysql/25646/




Coutty, Изображение
Аватара пользователя
Coutty

Re: Разное - Несколько вопросов по PHP

Сообщение Coutty »

Цитата:



Вот, например, ввели мы эту $_GET['data']. Нужно выполнить поиск по таблице table_name по полю name:



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

Причём пользователь вводит данные в форму разныого характера, а поиск определяет по каким полям надо искать и выдаёт наиболее соответствующие результаты.

Аналогично поиску человеков на facebook/vkontakte фразой вида "Петя Васечкин Тула", выдаёт всех людишек с именем "Петя" (или его производными), фамилией "Васечкин", которые указали город "Тула".
Аватара пользователя
Igor_I

Re: Разное - Несколько вопросов по PHP

Сообщение Igor_I »

Есть база, в ней много полей, одни из них - name - Петя, family - Васечкин, city - Тула.

Надеюсь с формой разобрался. Тогда у нас есть переменные $pname, $pfamily, $pcity. Не путать с полями в базе.

Делаем запрос -

$query = "SELECT * from `user` WHERE `city`='".$pcity."' AND `family`= '".$pfamily."' AND `name` LIKE '%".$pname."%'";

$result = mysql_query($query);

Далее в ман по php.
Аватара пользователя
ManHack

Re: Разное - Несколько вопросов по PHP

Сообщение ManHack »

Цитата:



Вот, например, ввели мы эту $_GET['data']. Нужно выполнить поиск по таблице table_name по полю name:



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

Причём пользователь вводит данные в форму разныого характера, а поиск определяет по каким полям надо искать и выдаёт наиболее соответствующие результаты.

Аналогично поиску человеков на facebook/vkontakte фразой вида "Петя Васечкин Тула", выдаёт всех людишек с именем "Петя" (или его производными), фамилией "Васечкин", которые указали город "Тула".
Аватара пользователя
Igor_I

Re: Разное - Несколько вопросов по PHP

Сообщение Igor_I »

LIKE - это вместо "равно". Используется для поиска похожих сочетаний.

% - подстановочный знак "любое количество символов".

_ - "один символ".


Цитата ManHack:



Я понял как забирвать из формы одну переменную, а как три забрать?
Разное - Несколько вопросов по PHP




Делать три поля ввода с разными именами.

И забирать: $_GET['name'], $_GET['family'], $_GET['city']. Или же $_POST['name'] я только не уверен, что можно делать имя для поля - name, если передаёте POST'ом.

А чтоб в одно поле всё что угодно писать и получать результаты поиска по всей БД - это особое мастерство Изображение Как вы, наверное, помните, в том же "контакте" поиск чего угодно появился не так уж и давно. Полагаю, дело там в дополнительном столбце, который содержит в себе особый индекс. Фраза, получаемая из поля ввода разбивается по пробелам и используется поиск с фразами, где слова меняются местами. Хотя это должна быть слишком высокая нагрузка на СУБД)
Аватара пользователя
ManHack

Re: Разное - Несколько вопросов по PHP

Сообщение ManHack »

Получается, у нас три переменных.

Я понял как забирвать из формы одну переменную, а как три забрать?

Что значит слово LIKE '% в запросе?
Аватара пользователя
Coutty

Re: Разное - Несколько вопросов по PHP

Сообщение Coutty »

Цитата:



лагаю, дело там в дополнительном столбце, который содержит в себе особый индекс. Фраза, получаемая из поля ввода разбивается по пробелам и используется поиск с фразами, где слова меняются местами. Хотя это должна быть слишком высокая нагрузка на СУБД)



Я собственно так и думал... Хотя не уверен что на тех же vpleer.ru и vkontakte.ru именно так, но данный способ выглядит убедительно.

Объясните как слова по пробелам разбивать пожалуйста.

И чем отличается метод GET от метода POST?
Аватара пользователя
Igor_I

Re: Разное - Несколько вопросов по PHP

Сообщение Igor_I »

А кто сказал, что там 3 переменные? Переменная одна, а вот как сделан поиск - коммерческая тайна. Можно конечно докумекать и сделать аналогично, но это будет именно аналогично, а не точно так же.
Аватара пользователя
ManHack

Re: Разное - Несколько вопросов по PHP

Сообщение ManHack »

Цитата:



лагаю, дело там в дополнительном столбце, который содержит в себе особый индекс. Фраза, получаемая из поля ввода разбивается по пробелам и используется поиск с фразами, где слова меняются местами. Хотя это должна быть слишком высокая нагрузка на СУБД)



Я собственно так и думал... Хотя не уверен что на тех же vpleer.ru и vkontakte.ru именно так, но данный способ выглядит убедительно.

Объясните как слова по пробелам разбивать пожалуйста.

И чем отличается метод GET от метода POST?
Ответить

Вернуться в «Программирование и базы данных»