Re: using cgi.pm to create and interpret textboxes

[email protected] (marys) Mon, 17 Nov 2008 03:14:01 -0800 (PST)
Newsgroups perl.beginners.cgi
Organization http://groups.google.com
Message-ID <7fb6ddf9-057f-4cc0-8030-1c7946609ed0@r15g2000prh.googlegroups.com>
On Nov 11, 10:46 am, [email protected] (Dermot
Paikkos) wrote:
> Hi
>
>
>
> > -----Original Message-----
> > From: marys [mailto:[email protected]]
> > Sent: 11 November 2008 11:20
> > To: [email protected]
> > Subject: using cgi.pm to create and interpret textboxes
>
> > 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[$_]"));
> > }
>
> > print $z->submit('Submit');
>
> > print $z->end_html;
>
> _______________________________________________________________________
>
> > ______________________
>
> > (2) action.cgi:
>
> > #!/usr/bin/perl -wT
> > use CGI::Carp qw(fatalsToBrowser);
>
>  Typo here.
>
>  use CGI ':standard';
>
> > use strict;
> > use diagnostics;
> > my $q = new CGI;
> > my @param=param();#these are the contents from textboxes on previous
> > page
> > print $q->header;
> > print $q->start_html;
>
> > my @leglenth;
>
> > my @param=param();
> > my $z;
> > my $a=-1;
>
> The issue is here.
>
> > foreach(0..2){
> > $a+=1;
> > $leglenth[$a] = $param[$a];
> > }
>
> Your puttng the names in the array not the values
>
> you want param($param[$a]);
>
> > my $numelements=scalar(@leglenth);
> > print $q->h2("The number of elements in array \@leglenth is
> > $numelements\n");
>
> > foreach (@leglenth){
> > print $q->h2("\$leglenth[$_] is $_ \n");
> > }
>
> > print $q->h2("\@leglenth 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
>
> print "===========================\n";
> foreach my $p (@param) {
>         next unless $p =~ /leglength/;
>         print $q->h4("$p = ".$q->param($p));}
>
> print $q->end_html;


Thank you very much.
Mary