use CGI::Form; $q = new CGI::Form; print "<H1>Customer Survey Using Tables</H1>\n"; print $q->start_multipart_form(); print "<TABLE>\n<TR>\n<TD>\n"; print "What did you order? "; print "</TD>\n<TD>\n"; print $q->textfield( -name=>'order', -value=>"", -maxlength=>30, -size=>30 ); print "</TD>\n</TR>\n<TR>\n<TD>\n"; print "How was the service? (5-good,1-bad) "; print "</TD>\n<TD>\n"; print $q->radio_group( -name=>'serviceRating', -values=>[`1','2','3','4','5'], -default=>'3' ); print "</TD>\n</TR>\n<TR>\n<TD>\n"; print "How did the food taste? (5-good,1-bad) "; print "</TD>\n<TD>\n"; print $q->radio_group( -name=>'tasteRating', -values=>[`1','2','3','4','5'], -default=>'3' ); print "</TD>\n</TR>\n<TR>\n<TD>\n"; print "What age group are you in? "; @ages=( `child', `teen', `20s', `30s', `40s', `50s', `senior' ); print "</TD>\n<TD>\n"; print $q->popup_menu( -name=>'ageGroup', -values=>\@ages ); print "</TD>\n</TR>\n<TR>\n<TD>\n"; print $q->checkbox( -name=>'comeAgain', -checked=>'checked', -value=>'yes', -label=>"I would come back again " ); print "</TD>\n</TR>\n<TR>\n<TD>\n"; print $q->submit( -name=>'Action', -value=>'Submit' ); print $q->reset(); print "</TABLE>"; print $q->endform();
The form generated by this script will appear in the browser as shown in Figure 4.2.
Figure 4.2.
The questionnaire, using a table, as it appears in the browser.
Using Netscape Frames
You can also use Netscape frames to display multiple pages within a single browser window. Frames are defined using the <FRAME>
tag, where each frame is associated with a single URL. You can have multiple CGI scripts running to produce a single Web page where each script runs within its own frame. An example HTML document that incorporates two frames running each of the above CGI programs follows:
<HTML> <FRAMESET ROWS=50%,50%> <FRAME SRC="http://vaders/cgi-bin/wpp/testform.cgi"> <FRAME SRC="http://vaders/cgi-bin/wpp/tablform.cgi"> </FRAMESET> </HTML>
Note:
The
<FRAME>
tag is not an HTML 2.0 or 3.2 tag. It is a Netscape extension that is also supported in Microsoft's Internet Explorer 3.0. If you are concerned about compatibility with other browsers, you should avoid using frames or provide a non-frame alternative.
In this example, the page displays two horizontal frames of equal size. In the top frame, it will execute testform.pl
, and in the bottom frame, it will execute tablform.pl
. The frames are divided evenly across the page. The resulting page of this example is shown in Figure 4.3.
Figure 4.3.
Both forms displayed in separate Netscape frames.