Общие => Базы данных => Тема начата: КубанГ от 01 Июня 2005, 06:21:17
Название: "Поисковый запрос" к БД с учётом разных параметров
Отправлено: КубанГ от 01 Июня 2005, 06:21:17
Всем привет!
Подскажите, пожалуйста, как грамотно составить "поисковый" запрос к базе.
Условия для запроса такие:
1. "Главный запрос" (мол, "хочу найти такую-то фигню"-->жмём Найти. Впрочем я
знаю, как это сделать (LIKE "%$query%")). Проблема в том, как составить этот запрос
для поиска по разным колонкам одной таблицы? Я делал так: $sql = "SELECT book_title, auth_name, price, type FROM title WHERE book_title LIKE
\'%$query%\' OR auth_name LIKE \'%$query%\' OR price LIKE \'%$query%\'"; Всё бы ничего -- работает, но ни как не соотносится со вторым условием для запроса
2. Есть три чекбокса (грубо говоря: тип один, тип два и тип три) и в зависимости от
того, какой тип выбран (или какие), по соответствующим параметрам и ведётся
поиск. Например: "Хочу найти такую-то фигню в типе один и два" -->жмём Найти Тип первый
Тип второй
Тип третий
Ещё бы знать, почему массив не передаётся в запрос (то есть если использовать в
запросе index.php&type=1 (а в БД type=$type) всё работает, выдаются все записи с
типом один, но когда ставишь такие вот скобки [] -- не работает, а следовательна
нельзя "найти такую-то фигню в типе один и два")
И главная проблема состоит в том, что я не могу совместить эти два условия. Хоть
убёй, но при таком коде(???) выдает все записи любого типа (если задавать поиск
только по чекбоксам) или записи любого типа, соотствующие "%$query%". $sql = "SELECT book_title, auth_name, price, type FROM title WHERE book_title LIKE
\'%$query%\' OR auth_name LIKE \'%$query%\' OR price LIKE \'%$query%\' AND(здесь я
ставил также и OR) type=\'$type\'";
Громозко получилось, но зато всеобъемлюще. Заранее спасибо.
Название: "Поисковый запрос" к БД с учётом разных параметров
Отправлено: sarutobi от 01 Июня 2005, 11:18:34
... where ((type=$type) and (book_title like \'%$query%\' ...)) расставь и правильно сгруппируй логические условия
Название: "Поисковый запрос" к БД с учётом разных параметров
Отправлено: КубанГ от 02 Июня 2005, 04:10:33
Угу, спасибо. Но вот только у меня не получается. Я сделал так: $sql = "SELECT book_title, auth_name, price, type FROM title WHERE ((type=\'$type\') AND (book_title LIKE \'%$query%\' OR auth_name LIKE \'%$query%\' OR price LIKE \'%$query%\'))"; И проблема таже: можно выбирать только один type, а по query поиск всё равно не ведётся в таком коде, равно как и вместе type+query
Название: "Поисковый запрос" к БД с учётом разных параметров
Отправлено: vervolf от 23 Июня 2005, 11:53:55
Привет народ! Я только начал изучать php и уме проблема. Надо составить поиск по БД из формы. Мол записал скажем номер, далее осуществляется поиск по этому номеру и выдаётся вся строка из БД. Код в принципе натворил, но не верно. Может кто чего подскажет? ПЛИЗЗЗ!!!
include ("config.php");
$form =
"";
print $form;
// Построить и выполнить запрос
$result = mysql_query("SELECT serial, nomber, name, name1, name2, ball * FROM pass WHERE $nomber = \'$keyword\'",$db);
// Если совпадения не найдены, вывести сообщение
// и заново отобразить форму
if (mysql_num_rows($result) == 0) :
print "Sorry, but no matches were found. Please try your search again:";
print $form;
// Найдены совпадения. Отформатировать и вывести результаты, else :
Название: "Поисковый запрос" к БД с учётом разных параметров
Отправлено: Меняздесьдавнонет от 23 Июня 2005, 12:00:26
надо научиться решать задачи постепенно. сначала научиться составлять запросы к базе. потом научиться выполнять запросы в пхп скрипте и выволдить результат. потом научиться работать с формами и получать значения из форм в пхп-скрипт. а дальше у тебя всё само получится. так же, как ты делаешь сейчас, просто не имеет смысла.
Название: "Поисковый запрос" к БД с учётом разных параметров
Отправлено: Меняздесьдавнонет от 23 Июня 2005, 12:00:49
А за размещение своего вопроса в чужом топике, я бы убивал.
Название: "Поисковый запрос" к БД с учётом разных параметров
Отправлено: КубанГ от 24 Июня 2005, 22:07:01