Автор Тема: "Поисковый запрос" к БД с учётом разных параметров  (Прочитано 4202 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн КубанГ

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Всем привет!

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

Условия для запроса такие:

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

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 61
  • +0/-0
  • 0
    • Просмотр профиля
... where ((type=$type) and (book_title like \'%$query%\' ...))
расставь и правильно сгруппируй логические условия

Оффлайн КубанГ

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Угу, спасибо.
Но вот только у меня не получается. Я сделал так:
$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
« Последнее редактирование: 07 Июня 2005, 05:50:40 от КубанГ »

Оффлайн vervolf

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 1
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Привет народ!
Я только начал изучать php и уме проблема. Надо составить поиск по БД из формы. Мол записал скажем номер, далее осуществляется поиск по этому номеру и выдаётся вся строка из БД.
Код в принципе натворил, но не верно. Может кто чего подскажет?
ПЛИЗЗЗ!!!
include ("config.php");

$form =

"

";

Keyword:


"


,

";


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 :

// Отформатировать и вывести значения полей.

list($serial, $nomber, $name, $name1, $name2, $ball) = mysql_fetch_row($result);

print "

Information:

";

print "serial: $serial
";

print "number: $nomber
";
print "name: $name
";
print "first name: $name1
";
print "middle name: $name2
";
print "ball: $$ball
";

?>

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
надо научиться решать задачи постепенно.
сначала научиться составлять запросы к базе.
потом научиться выполнять запросы в пхп скрипте и выволдить результат.
потом научиться работать с формами и получать значения из форм в пхп-скрипт.
а дальше у тебя всё само получится.
так же, как ты делаешь сейчас, просто не имеет смысла.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
А за размещение своего вопроса в чужом топике, я бы убивал.

Оффлайн КубанГ

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Круто, ребят! М-м, а как же я? :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28