Автор Тема: Организация поиска в базе  (Прочитано 2477 раз)

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

Оффлайн linke

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Организация поиска в базе
« : 20 Августа 2004, 14:21:51 »
Есть форма на которой можно выбрать много различных значений.Как получить данные с формы понятно,а вот как организовать правильно организовать запрос с условием where(т.е выбирает не так как надо).Или одним запросом не обойтись и надо использоватьт if и else.Подскажите сам принцип как организовать поиск.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Организация поиска в базе
« Ответ #1 : 20 Августа 2004, 16:47:10 »
The documentations is your friend

Оффлайн secam

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.trnavigator.ru
Организация поиска в базе
« Ответ #2 : 07 Сентября 2004, 22:16:36 »
Если набор полей формы - фиксированный, т.е. количство параметров поиска не меняется, можно использовать такой код.

my $div=\'\';
my $searchstring=\'\';
    if (defined($currency)) { $searchstring.=$div."tariffs.currency=\'".$currency."\'"; $div=" and "; }
        if (defined($summ)) { $searchstring.=$div."(tariffs.summ=".$summ." or tariffs.backsumm=".$summ.")"; $div=" and "; }        

и так все праметры. Потом:

       my $sth=$dbh->prepare(\'SELECT tariffs.id as id,..... FROM tariffs
WHERE \'.$searchstring);
$sth->execute();

Вариант скорее всего не идеальный, но работает.
Только тут параметры введенные пользователем попадают в запрос к БД и их обязательно надо как следует проверить на корректность.

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

 

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