Forum Webscript.Ru

Программирование => Perl => Тема начата: glebushka от 19 Июня 2002, 19:27:18

Название: модуль CGI.pm массив параметров.
Отправлено: glebushka от 19 Июня 2002, 19:27:18
Может кто знает, а то ведь эксперементальным путём можно и ошибиться)-:
Положим у меня в форме, которая передаёться с крипту на обработку идут одно за другим поля с одинаковым именем, в скрипте я подключаю модуль CGI.pm и с помощью встроенной функции param() получаю эти параметры в массив скаляров.
ВОПРОС: Они будут идти по порядку, или это уже как повезёт:-)? Вопрос для меня прямо таки скажим принципиальный, если не попорядку, то фигня получиться, помогите плиз, вроде читал доки, про порядок сортироки там ИМХО: ничего не сказано. ПлиZZZZZZZ Оч. надо!
Название: модуль CGI.pm массив параметров.
Отправлено: Mog. от 19 Июня 2002, 19:37:45
Дык, попробуй.
А че ты так боишся ошибиться то?
Название: модуль CGI.pm массив параметров.
Отправлено: Mog. от 19 Июня 2002, 19:57:53
Если я тя правильно понял (насчет одинаковых имен поле), то вот что получилось

#!/usr/bin/perl
use CGI;
$y=new CGI;
$yes=$y->param(\'yes\');
print "Content-type: text/html\\n\\n";

if (!$yes){
print "
";
for ($x=0;$x<10;$x++){print "";}
print "";
print "";
print "
";
exit;
}

for ($x=0;$x<10;$x++){
$dat[$x]=$y->param(\'pole\');
}

for (@dat){print"$_
";}

это типа скрипт, а выдал он
1
1
1
1
1
1
1
1
1
1

Такие вот дела :)
Название: модуль CGI.pm массив параметров.
Отправлено: Evgeny от 20 Июня 2002, 16:53:31
Если это так принципиально важно, то сам анализируй переменные среды.
Вот так ты получишь весь ввод в переменную буфер

if ($ENV{\'REQUEST_METHOD\'} eq "GET") { $buffer = $ENV{\'QUERY_STRING\'}; }
else { read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});  }

Анализируешь, разбиваешь, переносишь как хочешь, раз в модуле CGI сомневаешься.
Полная свобода действий.
Название: модуль CGI.pm массив параметров.
Отправлено: ESE от 20 Июня 2002, 22:13:57
Блин Глеб, что ты там еще задумадл?????????? :)
Как твой сайт???? как сам??????
Название: модуль CGI.pm массив параметров.
Отправлено: glebushka от 20 Июня 2002, 22:47:42
Ну обо всём по порядку:
Mog., интересный у тебя вывод получился, ты что вводил все 1?
А суть трабл у меня заключалась в следующем:
У меня есть нерегулируемое количество полей (зависит от юзверя, постоянно меняеться), в них одинаковый тип данных (цифры),  иного выхода учесть их все кроме чем назвать одним именем я не нашёл. К счастью в CGI.pm предусмотрен радиус кривизны:-) моих рук и поэтому в массиве данные идут по-порядку, результат можно посмотреть на http://www.glebushka.hut.ru/const/120.shtml
(там где корзина, понабирайте себе товаров, и попробуйте поменять их количество, это как раз то, из-за чего весь этот гемор)
Evgeny
Неее, ещё раз убедился в безусловном преимуществе CGI.pm:-)
Цитировать
Блин Глеб, что ты там еще задумадл??????????  
Как твой сайт???? как сам??????

ESE, это уже флейм:-), давай или мне на мыло ( stalnoy_gleb@mail.ru ), или на аську (159610597), а то тут, говорят:-), модераторы иногда бывают;-))). Если коротко то полный ..., абзац вообщем, вместо того чтобы готовиться к ГОСам и поступлению в институт, я тут скриптики пописываю:-) да на форуме тусуюсь, единственное ума на что пока ещё хватило, так это подождать до окончания всех экзаменов с разработкой собственного сайтика, так что появление его, по адресу http://www.glebushka.pp.ru , ожидаеться в конце июля, как только поступлю в институт. Воть.
Название: модуль CGI.pm массив параметров.
Отправлено: Mog. от 21 Июня 2002, 07:33:27
Цитировать
Mog., интересный у тебя вывод получился, ты что вводил все 1?

Вводил я 1 2 3 4 5 6 7 8 9 10, а получил голимые единицы. Наверно в CGI.pm на радиус кривизны моих рук не рассчитан :(