Hi > -----Original Message----- > From: marys [mailto:[EMAIL PROTECTED] > Sent: 11 November 2008 11:20 > To: beginners-cgi@perl.org > 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 [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 print "===========================\n"; foreach my $p (@param) { next unless $p =~ /leglength/; print $q->h4("$p = ".$q->param($p)); } print $q->end_html; -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/