On Tue, 2008-11-11 at 03:19 -0800, marys wrote:
> Hello:
>  Can anyone tell me how to use CGI.pm's 'textfield' function to set up
> a form with a lot of fill-in fields and then parse them?  I tried to
> read three values from input boxes but the output seems to be the name
> of the textbox and not its value.  Here are two scripts:
> 
> (1) a.cgi:
> 
> #!/usr/bin/perl -wT
> use CGI::Carp qw(fatalsToBrowser);
> use CGI ':standard';
> use strict;
> use diagnostics;
> my $z = new CGI;
> print $z->header;
> print $z->start_html;
> 
> 
> print $z->h2("Please indicate the length of each leg of the
> triangle:"),"\n";
> 
> print  $z->startform(-method=>"POST",-action=>"action.cgi");
> 
> my @leglength;
> my @leg;
> 
> foreach (0..2){
>    print  $z->h2($leg[$_],"  ",textfield("leglength[$_]"));
> }
I would suggest for clarity you may want to either stick to the OO style
or the functional style or at least have a reason for division
        print $z->h2($leg[$_]," ",$z->textfield("leglength[$_]"))

> 
> print $z->submit('Submit');
> 
> print $z->end_html;
>  
> _____________________________________________________________________________________________
> 
> (2) action.cgi:
> 
> #!/usr/bin/perl -wT
> use CGI::Carp qw(fatalsToBrowser);
> use CGI ':standar';
> use strict;
> use diagnostics;
> my $q = new CGI;
> my @param=param();#these are the contents from textboxes on previous
> page

"params" is a hash and I don't think you want to convert it to an array
("param" is a method which I don't think should be accessed this way) If
you do then only the odd numbers will correspond to the values (the
evens being the names/keys).  I'd suggest for now you continue to just
access the values through the CGI object ($q->param(...)).


> print $q->header;
> print $q->start_html;
> 
> my @leglenth;
> 
> my @param=param();
> my $z;
> my $a=-1;
> foreach(0..2){
> $a+=1;
> $leglenth[$a] = $param[$a];
> }
> 
> my $numelements=scalar(@leglenth);
> print $q->h2("The number of elements in array [EMAIL PROTECTED] is
> $numelements\n");
> 
> foreach (@leglenth){
> print $q->h2("\$leglenth[$_] is $_ \n");
> }
> 
> print $q->h2("[EMAIL PROTECTED] is @leglenth \n");
> 
> print $q->end_html;
>  
> _____________________________________________________________________________________________
> I illustrated the problem with just three fill-in fields, but I will
> need many more.  The output of the print statements in the file
> 'action.cgi' is that each element listed has the name of the element,
> e.g. "leg[0]" , not the value filled in.  I can pass the values
> through if I individually label each input box in the input script,
> but it gets very sloppy and tedious to do it that way.  Does anyone
> know if it can be done the way I tried?
> Thank you in advance.
> Mary
> 
> 


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to