tekniko has asked for the wisdom of the Perl Monks concerning the following question:
#!/usr/bin/perl -w use strict; use CGI::Request; use DBI; require 5.005; $| = 1; # OUTPUT_AUTOFLUSH my $req = new CGI::Request; my $DataKey = "domain"; my $Driver = 'mysql'; my $DataBase = 'webstat1'; my $Table = 'sites'; my $User = 'statadmin'; my $Password = 'statsrus'; my $dbh; my @Fields = qw( priority domain server_name server_type log_code log_ +location ip_addr username timestamp ); my $button = (defined($req->param("button"))) ? $req->param("button") +: "Default"; my %FormData = getformdata(); ## MAIN ################################ MAIN: { db_connect(); search_page() if ($button eq "Search" || ( $button eq "Default" && + !defined %FormData)); form_page() if ($button eq "Find Record" || $button eq "Cancel" || + ($button eq "Default" && defined (%FormData))); edit_page() if ($button eq "Edit"); add_page() if ($button eq "Add Record"); save_record() if ($button eq "Save"); delete_record() if ($button eq "Delete"); db_disconnect(); } ## Subroutines ########################## sub getformdata() { my $p; my %F; foreach $p ( @Fields ) { $F{$p} = $req->param($p) if (defined ($req->param($p))); } $F{record} = $req->param("record") if (defined ($req->param("recor +d"))); $F{savetype} = $req->param("savetype") if (defined ($req->param("s +avetype"))); return %F; } sub print_htmlheader() { print "Content-type: text/html\n\n"; print <<__END_OF_HTML__; <HTML> <HEAD><TITLE>Webstat Administration</TITLE></HEAD> <BODY bgcolor="#FFFFFF"> <FORM METHOD=POST ACTION="statadmin.pl"> <CENTER> __END_OF_HTML__ # FIXME #<TABLE width=75%> # <TR><TD rowspan=2 align=center valign=top><IMG ALT="" WIDTH=150 H +EIGHT=129 SRC="http://www.primary.net/primarylogo_150.gif"></TD> # <TD align=center><H2>Webstat Site Administrator</H2></TD></TR> # <TR><TD> } sub print_htmlfooter { my $page = shift; print " <HR width=75%>\n"; print " <CENTER>\n"; if ($page eq "search") { print " <INPUT TYPE=SUBMIT NAME=\"BUTTON\" VALUE=\"Add Record +\">\n"; } elsif ($page eq "form") { print " <INPUT TYPE=SUBMIT NAME=\"button\" VALUE=\"Search\">\ +n"; print " <INPUT TYPE=SUBMIT NAME=\"button\" VALUE=\"Add Record +\">\n"; print " <INPUT TYPE=SUBMIT NAME=\"button\" VALUE=\"Edit\">\n" +; print " <INPUT TYPE=SUBMIT NAME=\"button\" VALUE=\"Delete\">\ +n"; } elsif ($page eq "edit" || $page eq "add") { print " <INPUT TYPE=HIDDEN NAME=\"savetype\" VALUE=\"$page\"> +\n"; print " <INPUT TYPE=SUBMIT NAME=\"button\" VALUE=\"Save\">\n" +; print " <INPUT TYPE=SUBMIT NAME=\"button\" VALUE=\"Cancel\">\ +n"; } print <<__END_OF_HTML__; </CENTER> </FORM> </BODY> </HTML> __END_OF_HTML__ } sub db_connect() { my $dsn = "DBI:$Driver:$DataBase"; $dbh = DBI->connect($dsn, $User, $Password, {RaiseError => 1, Auto +Commit => 1}); } sub db_disconnect() { $dbh->disconnect; } ## Pages ############################### sub search_page { my $message = shift; print_htmlheader(); print "<CENTER><H2>$message</H2></CENTER>" if ($message); print <<__END_OF_HTML__; <CENTER> Search by $DataKey: <INPUT TYPE=TEXT NAME="domain"> <INPUT TYPE=SUBMIT NAME="button" VALUE="Find Record"> </CENTER> __END_OF_HTML__ print_htmlfooter("search"); } sub form_page { my $message = shift; my $hashref; my $field; my $query = "select * from $Table where $DataKey = ?"; my $sth = $dbh->prepare($query); $sth->execute($FormData{$DataKey}); print_htmlheader(); print "<CENTER>\n"; print "<H2>$message</H2>\n" if (defined($message)); print "<TABLE border>\n"; while (defined($hashref = $sth->fetchrow_hashref)) { foreach $field ( @Fields ) { print " <TR><TD><B>$field:</B> </TD><TD>$$hashref{$fie +ld} </TD></TR>\n"; } } print "<INPUT TYPE=HIDDEN NAME=\"record\" VALUE=\"$FormData{$DataK +ey}\">"; print "</TABLE>\n"; print "</CENTER>\n"; print_htmlfooter("form"); } sub edit_page { my $message = shift; my $hashref; my $query = "select * from $Table where $DataKey = ?"; my $sth = $dbh->prepare($query); $sth->execute($FormData{record}); print_htmlheader(); print "<CENTER>\n"; print "<H2>$message</H2>\n" if (defined($message)); while (defined($hashref = $sth->fetchrow_hashref)) { print<<__END_OF_HTML__; <TABLE border> <TR><TD><B>Priority:</B></TD> <TD>$$hashref{priority} </TD></TR> <TR><TD><B>Domain:</B></TD> <TD><INPUT TYPE=HIDDEN NAME="domain" VALUE="$$hashref{domain}" +>$$hashref{domain} </TD></TR> <TR><TD><B>Server Name:</B></TD> <TD><INPUT TYPE=TEXT NAME="server_name" VALUE="$$hashref{serve +r_name}"></TD></TR> <TR><TD><B>Server Type:</B></TD> <TD><INPUT TYPE=TEXT NAME="server_type" VALUE="$$hashref{serve +r_type}"></TD></TR> <TR><TD><B>Log Code:</B></TD> <TD><INPUT TYPE=TEXT NAME="log_code" VALUE="$$hashref{log_code +}"></TD></TR> <TR><TD><B>Log Location:</B></TD> <TD><INPUT TYPE=TEXT NAME="log_location" VALUE="$$hashref{log_ +location}"></TD></TR> <TR><TD><B>IP Address:</B></TD> <TD><INPUT TYPE=TEXT NAME="ip_addr" VALUE="$$hashref{ip_addr}" +></TD></TR> <TR><TD><B>Username:</B></TD> <TD><INPUT TYPE=TEXT NAME="username" VALUE="$$hashref{username +}"></TD></TR> <TR><TD><B>Time Stamp:</B></TD> <TD>$$hashref{timestamp} </TD></TR> </TABLE> </CENTER> __END_OF_HTML__ } print_htmlfooter("edit"); } sub add_page { print_htmlheader(); my $hashref; my $field; print "<CENTER>\n<TABLE border>\n"; print <<__END_OF_HTML__; <TR><TD><B>Priority:</B></TD> <TD><INPUT TYPE=TEXT NAME="priority" VALUE=""></TD></TR> <TR><TD><B>Domain:</B></TD> <TD><INPUT TYPE=TEXT NAME="domain" VALUE=""></TD></TR> <TR><TD><B>Server Name:</B></TD> <TD><INPUT TYPE=TEXT NAME="server_name" VALUE=""></TD></TR> <TR><TD><B>Server Type:</B></TD> <TD><INPUT TYPE=TEXT NAME="server_type" VALUE=""></TD></TR> <TR><TD><B>Log Code:</B></TD> <TD><INPUT TYPE=TEXT NAME="log_code" VALUE=""></TD></TR> <TR><TD><B>Log Location:</B></TD> <TD><INPUT TYPE=TEXT NAME="log_location" VALUE=""></TD></TR> <TR><TD><B>IP Address:</B></TD> <TD><INPUT TYPE=TEXT NAME="ip_addr" VALUE=""></TD></TR> <TR><TD><B>Username:</B></TD> <TD><INPUT TYPE=TEXT NAME="username" VALUE=""></TD></TR> __END_OF_HTML__ print "</TABLE>\n</CENTER>\n"; print_htmlfooter("add"); } sub save_record() { # This sub is used to actually save the data to the database if ($FormData{savetype} eq "add") { my $hashref; my %rst; my $field; my @values; my @colname; } elsif ($FormData{savetype} eq "edit") { my $field; my $query = "update $Table set ? where $DataKey = '$FormData{$Data +Key}'"; my $sth = $dbh->prepare($query); print_htmlheader(); print $query; foreach $field (@Fields) { print "$field: $FormData{$field}<BR>\n" if ($field ne "domain +" && $field ne "priority"); } form_page("Record Saved"); } } sub delete_record() { } sub data_page() { }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: HTML, DB, and Perl
by OeufMayo (Curate) on Jan 05, 2001 at 21:42 UTC | |
|
Re: HTML, DB, and Perl
by kschwab (Vicar) on Jan 05, 2001 at 22:19 UTC | |
|
Re: HTML, DB, and Perl
by ichimunki (Priest) on Jan 05, 2001 at 22:09 UTC | |
|
Re: HTML, DB, and Perl
by tekniko (Deacon) on Jan 06, 2001 at 00:43 UTC |