Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Получение массива из формы


Автор: Anarki 18.5.2005, 12:57
Доброе время суток!
Имеется форма и элементы в ней
Код

<input type="text" name="fields[0]">
<input type="text" name="fields[1]">
<input type="text" name="fields[2]">
<input type="text" name="fields[3]">
<input type="text" name="fields[4]">


Вопрос, можно ли вытащить эти значения как массив?
метод param(); не помогает почему-то, я делаю $q->param('fields'), ($q - обект CGI), пробовал через import_names('FORM'); тоже к $FORM::fields ничего не даёт. Не eval'ить же их? что подскажете делать?
Добавлено @ 12:58
Чтобы я мог обращаться к @fields, ($fields[0], $fields[1] и т.п.)

Автор: korob2001 18.5.2005, 13:38
Просто присвой всем полям одинаковые имена, а затем извлекай тем же param(), в списковом контексте.

Вот пример:
Код

<html>
 <head>
  <title>Test</title>
 </head>
 <body>
  <form action="/cgi-bin/test.pl" method="post">
   <input type="text" size="25" name="arr"><br>
   <input type="text" size="25" name="arr"><br>
   <input type="text" size="25" name="arr"><br>
   <input type="text" size="25" name="arr"><br>
   <input type="text" size="25" name="arr"><hr>
   <input type="submit" value="Отправить" name="send">
   <input type="reset" value="Очистить">
  </form>
 </body>
</html>

А вот скрипт, который получает эти поля в виде массива:
Код

#!/usr/bin/perl -w
use strict;
use CGI;

my $q = new CGI;

my @results = $q->param('arr');

print $q->header( -charset => 'Windows-1251' );
print $q->start_html( -title => 'Test' );

foreach ( @results ) {
   print $q->p( $_ );
}

print $q->end_html();

Удачи.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)