There are many ways of addressing this issue. The following is not the best, but it works. I have a form where teachers can enter lesson plans and a series of check boxes represent the appropriate grade levels, K through 12. The checkboxes are named GradeK, Grade1, ... Grade12.
When this data is sent via CGI, the parameter is sent to the script as GradeK=on (or whatever value you set the checkbox at). No checkbox parameter is sent if it's not checked. Therefore, I use the following sub to pull the data:
sub getGrades {
my $grades;
my @keys = $template->param;
# Look for the grade parameters and add each one to $grades
foreach (@keys) {
$grades .= $1 . ',' if /^Grade([1-9]|1[0-2]|K)$/;
}
$grades =~ s/,$//; # remove trailing comma
return $grades;
}
This sub is called from the following sub which uses DBI to write the data to a MySQL database:
sub storeData {
my $table = shift;
my $grades = getGrades();
my $standards = getStandards();
use DBI;
my $dbh = DBI->connect("DBI:mysql:$database",$user,$password);
$dbh->{RaiseError} = 1;
# save template information to database
my $sql = 'INSERT INTO ' . $table . '(title, lesson_summary,
grades, standards)
VALUES (?, ?, ?, ?)';
my $sth = $dbh->prepare($sql);
$sth->execute(
$template->param('Title'),
$template->param('Summary'),
$grades,
$standards
);
$template->end_html;
$sth->finish;
$dbh->disconnect;
print $template->redirect('http://www.someserver.com/some/path/tha
+nks.html');
}
This should give you a good start on how to approach this (Grades is defined as varchar(28), by the way).
Cheers,
Ovid |