Perl-CGI: как получить выбор формы? - PullRequest
0 голосов
/ 28 июня 2011

Может кто-нибудь сказать, пожалуйста, как я могу определить, какой выбор был выбран пользователем с помощью выпадающего меню в следующем фрагменте кода?что я делаю не так?

#!/usr/bin/perl -wT

use     strict ;
use     warnings ;
use     CGI ;
use     CGI::Carp qw(warningsToBrowser fatalsToBrowser) ;


my      $cgi = new CGI ;
print   $cgi->header(-type=>"text/html", -charset=>"utf-8") ;
print   $cgi->start_html(-title=>"Data Analysis | hellas online") ;

my %labels = (  "yes"   =>      "For Sure!",
                "no"    =>      "Not for me.",
                "maybe" =>      "Maybe So."     ) ;    
print $cgi->popup_menu( -name           => "your_answer",
                        -values         => ["yes", "no", "maybe"],
                        -default        => "yes",
                        -labels         => \%labels     ) ;
my @selected = $cgi->param("your_answer") ;
foreach my $i (@selected)
{
        print $cgi->$i."\n" ;
}
print   $cgi->end_html ;

the ... print $ cgi -> $ i. "\ n";... оператор ничего не отображает?!

спасибо.

Ответы [ 3 ]

0 голосов
/ 29 июня 2011

Я пишу это догадкой, так что это может быть не совсем правильно, но, надеюсь, это послужит своего рода руководством к тому, с чего начать: я думаю, что проблема в том, что если предоставленный код действительно всеу вас есть, сайт статичен - то есть действительно не может выбрать что-то.Как только пользователь вносит изменения в то, что в данный момент отображается в выпадающем меню, ваш скрипт не замечает, так как он уже выполнил свою работу и последняя строка уже выполнена.Изменения в выпадающем меню не передаются (и даже не замечаются) веб-сервером, и, таким образом, @selected останется пустым списком (при этом я не знаю, почему @selected по крайней мере не содержит вашвыбор по умолчанию, но, возможно, я что-то здесь пропускаю).

В примечании можно также изменить @selected на $selected, так как в раскрывающемся меню все равно не разрешено несколько вариантов выбора.

0 голосов
/ 29 июня 2011

Вы никогда не создаете форму, поэтому значение popup_menu никогда не может быть отправлено. Вы должны поместить свои элементы управления формы внутри формы.

$cgi->param будет иметь данные для извлечения только после того, как данные формы будут отправлены (вам также понадобится кнопка отправки) на сервер из браузера.

0 голосов
/ 28 июня 2011

Вы используете неправильный синтаксис: Не print $cgi->$i."\n" ;, а print $i."\n" ;

То, что происходит, просто:

$a = "abc"
print $cgi->$a ."\n"

будет искать члена "abc" из $cgi

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...