-----Original Message----- From: JupiterHost.Net [mailto:[EMAIL PROTECTED] Sent: Tuesday, July 06, 2004 3:17 PM To: John Pretti Cc: [EMAIL PROTECTED] Subject: Re: Form Validation
John Pretti wrote: > Hi all, Hello, > What is the best way to validate a form element? I am using the following > code to generate a set of radio buttons; how can I ensure that one of the > buttons is checked before processing the rest of the script? Assuming %label is hw => 'H W here', nw => 'North West', etc... you could simply do: my $promdir = CGI::param('promdir'); die 'Invalid input' if !exists $label{$promdir}; > print $q->start_multipart_form, > $q->p("Please select a directory to promote the file:"), > $q->radio_group ( > -name=>'promdir', > -values=> I'd use -values => [keys %label], for consistancy and sanity's sake > ['hw','nw','sw','swmfis','swunifi','swwebcaaf'], > -labels=>\%label, > -default=>'selected', > -linebreak=>'true'), > $q->br, > $q->submit('Promote'), > $q->end_form; > > Thanks in advance, HTH Lee.M - JupiterHost.Net > John OK now I am really lost. Here is what I am not following, the first time the form is run it will have no parameters so the form will just be presented; however if someone clicks promote without selecting a directory it will still be blank, so how can perl determine when the promote button has been pressed and blank parameters are being passed to the script. I have included my code below. The script in its current state works perfectly, I just want to add an extra level of checking. Thanks in advance. -John #!/usr/bin/perl -w # perlPromote.cgi by John Pretti # Comments/Questions john[at]web-connected.com # Last modified 05/17/04 # Load needed Perl modules use strict; use diagnostics; use CGI; #Make HTML east to deal with use CGI::Carp 'fatalsToBrowser'; # Report errors to Browser use File::Slurp; # SCP commands my $scp_cmd = "/usr/bin/scp"; my $scp_opts = '-i /home/apache/.ssh/id_dsa '; # Current Working Directory my $src_dir = "/www/web/htdocs/merlin/upload"; # Promotion directories my @rem_hosts = ('x.x.x.x', 'y.y.y.y', 'z.z.z.z'); my $working_dir = "home/rdwebadmin/support_docs"; my %directories_map = ("hw","$working_dir/HW","nw","$working_dir/NW","sw","$working_dir/SW","swmfi s","$working_dir/SW/MFIS","swunifi ","$working_dir/SW/Unifi","swwebcaaf","$working_dir/SW/WEBCAAF_eforms"); # Create New CGI Object my $q = new CGI; my %label = ('hw'=>'..support_docs/HW', 'nw'=>'..support_docs/NW', 'sw'=>'..support_docs/SW', 'swmfis'=>'..support_docs/SW/MFIS', 'swunifi'=>'..support_docs/SW/Unifi', 'swwebcaaf'=>'..support_docs/SW/WEBCAAF_eforms'); if ( $q->param() ) { # Promote the file to merlin foreach my $var(@rem_hosts) { system(`. /home/apache/apache_beigep1_dsa.dat;$scp_cmd $scp_opts $src_dir/* [EMAIL PROTECTED]:/$directories_map{$q->param("pr omdir")}`); } system(`rm -f $src_dir/*`); # Print success print $q->header(); print read_file('../../htdocs/merlin/htmlheadps.html'); print $q->p("The file has been promoted to the MERLIN Servers."); print read_file('../../htdocs/merlin/htmlfootps.html'); # Print form on first run } else { print $q->header(); print read_file('../../htdocs/merlin/htmlheadp.html'); print $q->start_multipart_form, $q->p("Please select a MERLIN directory to promote the file:"), $q->radio_group ( -name=>'promdir', -values=> ['hw','nw','sw','swmfis','swunifi','swwebcaaf'], -labels=>\%label, -default=>'selected', -linebreak=>'true'), $q->br, $q->submit('Promote'), $q->end_form; print read_file('../../htdocs/merlin/htmlfootp.html'); } -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>