Forum Webscript.Ru

Программирование => Perl => Тема начата: linke от 20 Августа 2004, 14:21:51

Название: Организация поиска в базе
Отправлено: linke от 20 Августа 2004, 14:21:51
Есть форма на которой можно выбрать много различных значений.Как получить данные с формы понятно,а вот как организовать правильно организовать запрос с условием where(т.е выбирает не так как надо).Или одним запросом не обойтись и надо использоватьт if и else.Подскажите сам принцип как организовать поиск.
Название: Организация поиска в базе
Отправлено: NeoNox от 20 Августа 2004, 16:47:10
Поиск - хорошая штука:
http://forums.webscript.ru/search.php?s=&action=showresults&searchid=201682&sortby=&sortorder=
Название: Организация поиска в базе
Отправлено: secam от 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();

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

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