Автор Тема: Подскажите, pls, как организовать поиск по нескольким полям формы.  (Прочитано 3652 раз)

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

Оффлайн AlexRH

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Имеется текстовый файл с разделителями.
Имеется скрипт который ищет в  $_ все, что ввели в поле формы.
Не могут понять, как сделать поиск по нескольким|всем полям.

Подскажите, pls.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Где ищет? В файле с разделителями?
Цитировать
AlexRH:
Имеется скрипт который ищет в $_ все, что ввели в поле формы.

Давайте говорить о том о чем имеем понятие. Специальная переменная это иллюзия в твоем вопросе.
Цитировать
AlexRH:
Не могут понять, как сделать поиск по нескольким|всем полям.

разбить на слова
perldoc -f split
и искать по каждому элемента массива.
The documentations is your friend

Оффлайн AlexRH

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Цитировать
NeoNox:
Где ищет? В файле с разделителями?

Да, открываю файл и считываю по строкам.
Затем разбиваю split\'ом.

Цитировать
NeoNox:
разбить на слова
и искать по каждому элемента массива.


Какого?
« Последнее редактирование: 04 Ноября 2003, 16:23:35 от AlexRH »

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Цитировать
Какого?

Полученного в результате split.
2B OR NOT 2B = FF

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Даю наводку:
$stroka это содержимое файла
$zapros это строка запроса
$s_string = (join \'|\', (split / /, $zapros));
print "Найдено!\\n" if ($stroka =~ /$s_string/);

$ perl -de0

  DB<1> $stroka = "Oh yeah 2"
  DB<2> $zapros = "eah no"
  DB<3> $s_string = (join \'|\', (split / /, $zapros));
  DB<4> print "Найдено!\\n" if ($stroka =~ /$s_string/);
Найдено!

Это если по любому из слов в запросе. А если искать все вместе слова то еще проще:
$ perl -de0

  DB<1> $stroka = "Oh yeah 2"
  DB<2> $zapros = "eah no"
  DB<3> $s_string = $zapros;
  DB<4> print "Найдено!\\n" if ($stroka =~ /$s_string/);
The documentations is your friend

Оффлайн AlexRH

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Спасибо тем, кто откликнулся.
Извиняюсь, что с запозданием возвращаюсь к обсуждению, но хотелось бы продолжить.

Как мне создать $zapros из нескольких полей формы?

use CGI qw(:all);
$q =new CGI;
$f1=$q->param(\'f1\');
$f2=$q->param(\'f2\');
$f3=$q->param(\'f4\');

$zapros=(join \'|\', ($f1, $f2, $f3));

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Именно так.
Или f1 или f2 или f4.
В чем трудность?
The documentations is your friend

Оффлайн AlexRH

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +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