Forum Webscript.Ru

Программирование => Perl => Тема начата: Yuraz от 13 Сентября 2002, 18:56:13

Название: Как из получить инфу из checkbox -ов
Отправлено: Yuraz от 13 Сентября 2002, 18:56:13
отмечен он или нет, без применения GGI библиотеки.

форма примерно такая:






submit


Знаю, что делаем хеш id, куда вводим значения, а как это делают люди не могу найти :(
Название: Как из получить инфу из checkbox -ов
Отправлено: YA от 13 Сентября 2002, 19:34:00
Цитировать
Как из получить инфу из checkbox -ов
Также, как и из любых других полей - в зависимотсти от метода передачи: GET или POST. Но CGI лучше используй.

А ты случайно checkbox с radio не перепутал? В одной форме не может быть несколько checkbox-ов c одинаковым именем!
Название: Как из получить инфу из checkbox -ов
Отправлено: Yuraz от 14 Сентября 2002, 09:03:18
Да, ошибся, так правильно:


 
 
 
 
 
 
 
 
Название: Как из получить инфу из checkbox -ов
Отправлено: Yuraz от 14 Сентября 2002, 15:30:58
Цитировать
В одной форме не может быть несколько checkbox-ов c одинаковым именем!


Может. В примере по CGI с одинаковым именем.

Сейчас сделал так

Страница:



Скрипт:
       @a=$FORM{\'cm\'};
       for($i=0;$i<@a;$i++){
       print "$a[$i]";
       }

Печатается один, последний элемент. Как же всё таки принять список выделенных checkbox?
Название: Как из получить инфу из checkbox -ов
Отправлено: GotZfild от 14 Сентября 2002, 18:02:36
Цитировать

Название: Как из получить инфу из checkbox -ов
Отправлено: YA от 15 Сентября 2002, 01:26:01
Yuraz, используй CGI и не изобретай велосипед.
Название: Как из получить инфу из checkbox -ов
Отправлено: Yuraz от 17 Сентября 2002, 15:49:41
Хорошо, посоветуйте плиз, как сделать список флажков (в одной форме) , и как потом извлечь данные, узнать какие флажки были установленны, хоть с CGI хоть без. Очень надо!!!!!!!!
Название: Как из получить инфу из checkbox -ов
Отправлено: YA от 18 Сентября 2002, 08:50:18
Цитировать
список флажков



Цитировать
узнать какие флажки были установленны
use CGI qw/:standart/;
$req=new CGI;
$f1=$req->param(\'f1\'); # для метода POST
$f2=$req->param(\'f2\');

$f1=$req->url_param(\'f1\'); # для метода GET
$f2=$req->url_param(\'f2\');

Если флажков много, то можно перебирать их в цикле, запихивать результат в массив и т.п.
Название: Как из получить инфу из checkbox -ов
Отправлено: Yuraz от 18 Сентября 2002, 09:08:48
YA спасибо, значит действительно с одним именем нельзя, тогда почти разобрался!
Название: Как из получить инфу из checkbox -ов
Отправлено: Yuraz от 24 Сентября 2002, 19:00:52
я сейчас наверное с ума сойду с этой темой :)
ну ни как не могу собрать массив из выделенных чекбоксов, делаю форму по типу встроенного примера в перле:

       start_form,
       "What\'s your name? ",textfield(\'name\'),p,
       "What\'s the combination?",
       checkbox_group(-name=>\'words\',
                      -values=>[\'eenie\',\'meenie\',\'minie\',\'moe\'],
                      -defaults=>[\'eenie\',\'moe\']),p,
       "What\'s your favorite color?",
       popup_menu(-name=>\'color\',
                  -values=>[\'red\',\'green\',\'blue\',\'chartreuse\']),p,
       submit,
       end_form,

выходит на странице что то типа этого:

eenie
meenie
minie
moe

далее обрабатываю, как в примере

    if (param) {
       print
           "Your name is ",em(param(\'name\')),p,
           "The keywords are: ",em(join(", ",param(\'words\'))),p,
           "Your favorite color is ",em(param(\'color\')),".\\n";
    }

и в ответ ничего получить не могу. Наверное это из за того, что делаю в скрипте:

############ ################ ################## #################
if ($ENV{\'REQUEST_METHOD\'} eq "POST")
    {read(STDIN, $bufer, $ENV{\'CONTENT_LENGTH\'});}
else
   {$bufer=$ENV{\'QUERY_STRING\'};}
@pairs = split(/&/, $bufer);
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;
        }

$step=$FORM{\'step\'};
....
############ ################ ################## #################

и из за этого ничего не проходит?

Но отказаться от предыдущего кода не могу, т.к. весь скрипт работает на нём, и библиотегу CGI вообще не использую. И сейчас не хочется использовать, как без неё построить список выделенных checkbox?


Заранее огромное спасибо за любые советы :*
Название: Как из получить инфу из checkbox -ов
Отправлено: YA от 25 Сентября 2002, 00:43:58
Объясни сначала, какой смысл в существовании в одной форме нескольких checkbox-ов с одинаковым именем (отправляется только один из них), и какой смысл в атрибуте "value" в checkbox-е?

Ты, наверное, имел в виду следующее:

eenie
meenie
minie
moe
Название: Как из получить инфу из checkbox -ов
Отправлено: Калибратор Стихийный от 04 Октября 2002, 16:55:35
Вначале, естественно, читаем данные из формы (никаких модулей не надо!):

read (STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'};
#дальше ясно...
#потом:
for $i (0..$checkboxes_number){
push @checkboxes, $FORM{"checkbox$i"};
}
при условии, что чекбоксы имеют имена checkbox0, checkbox1 и. т. д.
$checkboxes_number соответствует номеру последнего чекбокса, можно отправлять из формы в виде hidden-поля