Программирование => Perl => Тема начата: PaulB от 16 Декабря 2001, 23:30:15
Название: Массив из формы в скрипт
Отправлено: PaulB от 16 Декабря 2001, 23:30:15
Передать массив из формы в скрипт - передаю. Как мне его там заюзать? В РНР несложно - получил и использую $maillist[]. А как на перле?
Название: В догонку
Отправлено: PaulB от 16 Декабря 2001, 23:33:40
Если можно, пишите мылом, а то в инете я не всегда, а почту забираю регулярно...
Название: Массив из формы в скрипт
Отправлено: NeoNox от 17 Декабря 2001, 11:46:13
мыло ушло...
Название: Массив из формы в скрипт
Отправлено: PaulB от 17 Декабря 2001, 12:55:26
Это я уже читал. Как массив внутри скрипта использовать я знаю. Мне нужно знать, как принять его для обработки в скрипт. Вот кусок кода, который формирует форму с массивом: for ($i=0; $i<=$count-1; $i++){($mail,$name,$city,$phone) = split(/\\::/, $allmail[$i]); print "$name - $mail - $city FONT> \\n";}. Т.е. в массив заносятся номера выбранных email адресов, делаю сабмит. Теперь, как мне эти данные поиметь?
Название: Массив из формы в скрипт
Отправлено: NeoNox от 17 Декабря 2001, 13:29:39
Цитировать
Мне нужно знать, как принять его для обработки в скрипт.
То есть ты не можешь принять данные из формы в скрипт?
Название: Массив из формы в скрипт
Отправлено: PaulB от 17 Декабря 2001, 13:39:37
Да. Код извлекаю вот этим: if ($ENV{\'REQUEST_METHOD\'} eq "POST") { read(STDIN, $bufer, $ENV{\'CONTENT_LENGTH\'}); } else { $bufer=$ENV{\'QUERY_STRING\'}; } #End -------------------------
Обращаюсь так: @mails=$FORM{\'mails[]\'}, но выдается только последнее значение из массива. В чем проблемы могут быть?
Название: Массив из формы в скрипт
Отправлено: NeoNox от 17 Декабря 2001, 13:54:50
RTFM однозначно! Как думаешь, что делает эта строка? $FORM{$name} = $value; Это, друг, хэш, с ключем $name и значением $value. Так и используй его, не трогай масив.
Название: Массив из формы в скрипт
Отправлено: NeoNox от 17 Декабря 2001, 14:00:18
Если хочешь поместить значения хеша в масив- @array=%FORM; после этого у тебя в масиве будут и ключи (нечетные значения ака $array[1]...) и значения (соответственно четные $array[2]...) А вообще вариантов реализации-море...
Название: ему нужны ключи
Отправлено: Green Kakadu от 17 Декабря 2001, 14:16:20
Судя по форме, которую он создает, ему нужны майлы, т.е. ключи, т.е. : @mails= keys %FORM; И все.
Название: Массив из формы в скрипт
Отправлено: PaulB от 17 Декабря 2001, 14:26:06
Ребята, я в Перле новичек. Не могли бы Вы поподробнее. Как реально можно использовать это? Если можно, пример, плз.
Название: Массив из формы в скрипт
Отправлено: NeoNox от 17 Декабря 2001, 14:34:14
дык уже написали... Вот что у тебя разбирает форму: foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/ pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/ pack("C", hex($1))/eg; $FORM{$name} = $value; } все это дело помещается в хэш %FORM а далее как говорит Green Kakadu только ключи в масив @mails= keys %FORM; (масив содержит только ключи хэша, то есть мейлы)
или все скопом в @mails=%FORM; (масив содержит и ключи и значения хэша)
а дальше работай с масивом...
Название: а что надо?
Отправлено: Green Kakadu от 17 Декабря 2001, 14:38:50
Цитировать
Как реально можно использовать это?
А что надо. Вот получил ты массив с мейлами ну и чего еще надо? Может тогда аналог на php приведешь (раз ты аналогию в начале провел) и тогда мы поймем что требуется
Например, @mails= keys %FORM;
дает тебе массив из майлов, т.е. элементы: $mails[1]="первый мейл", $mails[2]="второй мейл", и т.д.
Название: Массив из формы в скрипт
Отправлено: PaulB от 17 Декабря 2001, 14:55:04
На РНР: for ($i=0; $i<=$count-1; $i++){($mail,$name,$city,$phone) = split(/\\::/, $allmail[$i]); print "$name - $mail FONT> - $city FONT> \\n";} строчка аналогичная. Обращаюсь в скрипте вот именно так, как и писали: $mails[1]="первый мейл" $mails[2]="второй мейл"
А здесь, выдает только последнее значение. Еще один нюанс. Кроме массива mails[], передаются еще поля, action, например. Как тогда быть. В хеше есть два ключа: mails[] и action.
Название: все что в форме
Отправлено: Green Kakadu от 17 Декабря 2001, 15:07:11
угу, да мы про другие поля как-то того, забыли. Тогда чтоб у тебя были чисто майлы можно написать так:
@mails=grep(/\\S+@\\S+/, keys %FORM); Если есть особое желание, то можно майлы проверить и поусердней, вместо /\\S+@\\S+/ вписать например такое: /(\\w\\d-)+@(\\w\\d-\\.)+\\w{2,4}/ ну если есть подозрения ,что твои майлы в форме могут попортить (там же ничего не стоит заменить на иные значения)
Название: Есть мысль:
Отправлено: Green Kakadu от 17 Декабря 2001, 15:17:20
Цитировать
"$name
;) mails[] - это же не один просто майл, а их кучка, так? как оно выглядит? или это $mails[$i]?
Название: Массив из формы в скрипт
Отправлено: PaulB от 17 Декабря 2001, 15:17:54
Ест что нибудь попроще? Ведь изначально, в моем случае, обращение типа $FORM{\'имя поля\'} давало значение этого поля. А если обращаюсь $FORM{\'mails[]\'} - выдает последнее значение массива.
Название: Массив из формы в скрипт
Отправлено: от 17 Декабря 2001, 15:23:33
Для проверки посылаю методом GET, выглядит так: mails[]=asa1&mails[]=asa2&mails[]=asa3 и т.д
Название: Массив из формы в скрипт
Отправлено: NeoNox от 17 Декабря 2001, 15:26:41
Цитировать
mails[] - это же не один просто майл, а их кучка, так? как оно выглядит?
Да тут отсутствует самое главное-алгоритм работы скрипта! Или его тщательно скрывают, чтобы мы с тобой, Green Kakadu, его не сперли. :) Ты получил хэш? Да! Как с ним работать знаешь? Если нет-http://perl.artil.ru:8101/docs/lama/g5.shtml#g501
Название: Массив из формы в скрипт
Отправлено: от 17 Декабря 2001, 15:30:45
Ничего не прячу я. Пишу скрип для конторы по рассылке прайс-листа. В админовской зоне надо сделать возможность удалять email адреса из рассылки. Формирую я их тем самым кодом, что писал выше. Теперь мне надо получить этот массив в скрипт и обработать его.
Название: Массив из формы в скрипт
Отправлено: NeoNox от 17 Декабря 2001, 15:34:43
Цитировать
Ничего не прячу я.
О! Другое дело! Братьям-спаммерам рад всегда помочь! :) (это шутка если кто не понял) А теперь с самого начала. 1. База у тебя в файле?
Название: Массив из формы в скрипт
Отправлено: от 17 Декабря 2001, 15:37:56
Ага. Вид такой:email::name::city::phone
Название: ж)
Отправлено: Green Kakadu от 17 Декабря 2001, 15:38:34
Цитировать
Да тут отсутствует самое главное-алгоритм работы скрипта! Или его тщательно скрывают, чтобы мы с тобой, Green Kakadu, его не сперли.
:) во всяком случае, мы явно чего-то не понимаем. Например, mails[]=asa1&mails[]=asa2&mails[]=asa3 и т.д где тут e-mail адреса? ;) Вот из этой строки, кого надо получить, эти asa1, asa2? Тогда они не в ключах, а в значениях @mails=grep(/\\S@\\S/, values %FORM); #Опять же, я ищу тут что-то вроде lala@lala.la, а там asa1,2,3
NeoNox Мы явно не догоняем, как выглядит форма отправки. Думаю, если мы увидим ее в HTML варианте со значениями, то все нормально найдем.
Название: Массив из формы в скрипт
Отправлено: NeoNox от 17 Декабря 2001, 15:41:33
Цитировать
Ага. Вид такой:email::name::city:hone
Я так и думал 2.Как записать в этот файл знаешь? 3.Как прочитать знаешь?
Название: Массив из формы в скрипт
Отправлено: от 17 Декабря 2001, 15:44:55
Green Kakadu Попробуй зайти по этой ссылке: http://213.59.17.20/cgi-bin/mailprice/mail.pl. Нажми "Удалить адресата", посмотри форму и ХТМЛ код.
Название: нашел!
Отправлено: Green Kakadu от 17 Декабря 2001, 15:44:56
А потом: @mails=split(/;/, $FORM{\'mails[]\'}) ; Вот! Раньше там было последнее значение, т.к. перезаписывалось все.
Название: во!
Отправлено: Green Kakadu от 17 Декабря 2001, 15:49:50
Цитировать
Нажми "Удалить адресата", посмотри форму и ХТМЛ код.
Теперь понятно, т.е. передаешь номера майлов, а потом в соотв. с номерами удаляешь, и надо чтоб в @mails были эти самые номера, так? Если да, то я правильно написал про изменение процедуры обработки. (мой последний топик) P.S. Кстати, назвал бы поле NAME как-нибудь попонятней, напр. mailnum ;) а то всякие небуквенные символы всегда настраживают
Название: Массив из формы в скрипт
Отправлено: от 17 Декабря 2001, 15:54:36
2 NeoNox Знаю. И пишу и читаю.
2 Green Kakadu Сейчас попробую изменить
Название: Массив из формы в скрипт
Отправлено: от 17 Декабря 2001, 16:00:19
2 Green Kakadu В поле name - Имя пользователя, а не номер
Название: эээ
Отправлено: Green Kakadu от 17 Декабря 2001, 16:10:32
Вот что там: Павел Черный - В поле NAME - mails[] а номер в значении поля, т.е. номер пользователя, как я понял
Название: Массив из формы в скрипт
Отправлено: от 17 Декабря 2001, 16:18:46
Green Kakadu Все верно
Название: ну так работает?
Отправлено: Green Kakadu от 17 Декабря 2001, 16:31:26
Цитировать
Все верно
Так оно заработало?
Название: Массив из формы в скрипт
Отправлено: от 17 Декабря 2001, 18:15:12
Green Kakadu, спасибо, все работает... Уоу.
Иногда полезно, оказывается в форуме пообчатся...
Тхенкс всем.
Если кого интиресует дальнейшая разработка скрипта, то милости прошу в аську 73384708. Пообчасемся, может совместными усилиями доведем до ума...
Название: Массив из формы в скрипт
Отправлено: от 17 Декабря 2001, 18:43:21
Green Kakadu, другой вопрос есть. Не встречал ли где алгоритма постраничного вывода на экран? Если где было, ткни меня носом, плз.