#!/usr/bin/perl -w # admin.cgi use strict; use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser); use DBI; my $dbh = DBI->connect("dbi:mysql:book", "user", "password"); param('Submit') ? add_new() : show_form(); $dbh->disconnect; sub show_form { my $sth = $dbh->prepare(qq{select * from rdf}); $sth->execute; print header, start_html("My Home Page Options"), h2("Choose My Favorite Sites"); print start_form(-method => 'POST', -action => 'admin.cgi'); while (my $data = $sth->fetchrow_hashref) { my $checked = $data->{Selected} ? "CHECKED" : ""; print checkbox(-name => 'Selected', -checked => $checked, -value => $data->{Name}, -label => $data->{Name}, ), p; } print h2("Add new channel") , p, "RDFs URL: ", textfield(-name => 'URL', -size => 50), p "Name of channel: ", textfield(-name => 'Name', -size => 50), p "Display on Home Page: ", checkbox(-name => 'new-Selected', -label => ''), p, submit(-name => 'Submit', -value => 'Make Changes'), end_form, end_html; } sub add_new { my $qry_select = qq(update rdf set Selected = 1 where ); my $qry_deselect = qq(update rdf set Selected = 0 where ); my @selected = param('Selected'); $qry_select .= qq(Name = '$_' or ) for @selected; $qry_deselect .= qq(Name <> '$_' and ) for @selected; $qry_deselect =~ s! and $!!; $qry_select =~ s! or $!!; my $sth = $dbh->prepare($qry_select); $sth->execute or print $DBI::errstr; $sth = $dbh->prepare($qry_deselect); $sth->execute or print $DBI::errstr; if (param('URL') && param('Name')) { my $url = param('URL'); my $name = param('Name'); my $display = param('new-Selected') ? 1 : 0; $sth = $dbh->prepare(qq{insert into rdf (URL, NAME, SELECTED) values ('$url', '$name', $display)}); $sth->execute or print $DBI::errstr; } show_form; }