http://qs321.pair.com?node_id=121768


in reply to Re: First Normal Form (was Re: CGI Checkboxes)
in thread CGI Checkboxes

I don't know if a working example would help, but here it is anyway:

#!/perl/bin/perl -w use strict; use CGI; my $query = new CGI; my @checks_list = qw(eenie meenie minie moe); my @check_array = qw(eenie moe); my %hash = ( eenie => 'Eenie', meenie => 'Meenie', minie => 'Minie', moe => 'Moe'); print $query->header(), $query->start_html(), $query->start_form(), $query->checkbox_group( -name => 'group_name', -values => \@checks_list, -default => \@check_array, -labels => \%hash, -rows => 2, -columns => 2), $query->end_form(), $query->end_html();

Replies are listed 'Best First'.
Re: Re: Re: First Normal Form (was Re: CGI Checkboxes)
by michellem (Friar) on Nov 01, 2001 at 04:18 UTC
    Thanks, but I need to use the param function - these checkboxes are defined by data in a database - I can't pre-define them.

    I hate to brute-force it, and not use CGI, which I can do, but I'd rather use CGI. But it's looking grim...

    Update: Here's the brute force code that works:

    elsif ($type =~ /check/) { my $i=0; print "$english:\n"; (my $values, my $labels) = split (':',$params[0]); my @checks_list = split (';',$values); my @clabels_list = split (';',$labels); foreach(@checks_list) { my $index=index $real_fields{$name},$_; if ($index != -1) { print "$clabels_list[$i]<INPUT TYPE=\"checkbox\" N +AME=\"$name\" VALUE=\"$_\" CHECKED>\n"; } else { print "$clabels_list[$i]<INPUT TYPE=\"checkbox\" N +AME=\"$name\" VALUE=\"$_\">\n"; } $i++; } print $q->br(); }

    I'd love it if someone found a way to use the param function of CGI to get this to work!