Created
December 11, 2019 16:28
-
-
Save karlwilbur/825fb66bd266da44d9d50754c70ca0a2 to your computer and use it in GitHub Desktop.
A stupid simple dynamic web app written in perl
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
#use warnings; | |
use strict; | |
use CGI qw(:standard); | |
use DBI; | |
#============================= | |
# Database connection | |
my $host = "localhost"; | |
my $database = "movie_db"; | |
my $user = "movielist"; | |
my $password = "password"; | |
my $dbn = "DBI:mysql:$database:$host:mysql_client_found_rows"; | |
my $database_handle = DBI->connect($dbn, $user, $password) || die "Couldn't connect to database: ".die($DBI::errstr)."\n"; | |
my $cgi = new CGI; | |
#============================= | |
# HTML | |
sub PrintHeader { | |
print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">"; | |
print "\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" >"; | |
print "\n\t<head>\n\t\t<title>Karl's Movie Database</title>\n\t\t<link href=\"/movies/movies.css\" rel=\"stylesheet\" type=\"text/css\" charset=\"ISO-8859-1\" />\n\t</head>"; | |
print "\n\t<body>\n\t\t<div>\n\t\t\t<h1 class=\"center\">Karl's Movie Database</h1>"; | |
} | |
sub PrintHome { | |
print "\n\t\t\t<h2 class=\"center\">Home Page</h2><hr />\n\t\t\t<table class=\"center\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" ><a href=\"/cgi-bin/movies.pl?action=browse\">Browse</a></td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" ><a href=\"/cgi-bin/movies.pl?action=add\">Add</a></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" ><a href=\"/cgi-bin/movies.pl?action=search\">Search</a></td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" ><a href=\"/cgi-bin/movies.pl?action=edit\">Edit</a></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" > </td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\"><a href=\"/cgi-bin/movies.pl?action=delete\">Delete</a></td>\n\t\t\t\t</tr>\n\t\t\t</table>"; | |
} | |
sub PrintPageTitle { | |
my $page = shift; | |
print "\n\t\t\t<h2 class=\"center\">".$page."</h2>\n\t\t\<hr />"; | |
} | |
sub PrintNavBar { | |
print "\n\t\t\t<table class=\"center\">"; | |
print "\n\t\t\t\t<tr>\n\t\t\t\t\t<td><a href=\"/cgi-bin/movies.pl?action=browse\">Browse</a></td>\n\t\t\t\t\t<td valign=\"middle\" align=\"center\" ><a href=\"/cgi-bin/movies.pl?action=search\">Search</a></td>\n\t\t\t\t\t<td valign=\"middle\" align=\"center\" ><a href=\"/cgi-bin/movies.pl?action=add\">Add</a></td>\n\t\t\t\t\t<td valign=\"middle\" align=\"center\" ><a href=\"/cgi-bin/movies.pl?action=edit\">Edit</a></td>\n\t\t\t\t\t<td valign=\"middle\" align=\"center\"><a href=\"/cgi-bin/movies.pl?action=delete\">Delete</a></td>\n\t\t\t\t</tr>\n\t\t\t</table><hr />"; | |
} | |
sub PrintSearch { | |
#present search form | |
print "\n\t\t\t<form id=\"search\" action=\"/cgi-bin/movies.pl\" method=\"get\" ENCTYPE=\"application/x-www-form-urlencoded\">\n\t\t\t<div><input type=\"hidden\" name=\"action\" value=\"search_results\" /></div>\n\t\t\t\t<table class=\"center\">"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"><a class=\"label\" id=\"search\">Search By:</a></td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"center\" class=\"label\">\n\t\t\t\t\t\t\t<select name=\"type\">\n\t\t\t\t\t\t\t\t<option value=\"movie\" selected>Movie Title\n\t\t\t\t\t\t\t\t<option value=\"actor\">Actor Name\n\t\t\t\t\t\t\t\t<option value=\"genre\">Genre\n\t\t\t\t\t\t\t\t<option value=\"year\">Year Released\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"value\" maxlength=50 size=30 /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t</table>\n\t\t\t\t<p><input type=\"submit\" value=\"Search\" /></p>\n\t\t\t</form>"; | |
} | |
sub PrintAdd { | |
my $i; | |
#present a form for adding a new movie to the database | |
print "\n\t\t\t<form id=\"add_movie\" action=\"/cgi-bin/movies.pl\" method=\"get\" ENCTYPE=\"application/x-www-form-urlencoded\">"; | |
print "\n\t\t\t\t<div><input type=\"hidden\" name=\"action\" value=\"add\" /></div>"; | |
print "\n\t\t\t\t<div><input type=\"hidden\" name=\"insert\" value=\"1\" /></div>"; | |
print "\n\t\t\t\t<table class=\"center\">"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"><a id=\"search\" class=\"label\">Add Movie:</a></td>\n\t\t\t\t\t\t<td class=\"label\" valign=\"middle\" align=\"right\">Movie <u>T</u>itle:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"title\" maxlength=50 size=30 accesskey=\"t\" /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"><u>Y</u>ear:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"year\" maxlength=4 size=6 accesskey=\"y\" /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"><u>G</u>enre:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"genre\" maxlength=20 size=20 accesskey=\"g\" /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\">R<u>u</u>ntime:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"runtime\" maxlength=8 size=10 value=\"00:00:00\" accesskey=\"u\" /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\">MPAA <u>R</u>ating:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"mpaa_rating\" maxlength=5 size=6 accesskey=\"r\" /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"><u>I</u>MDB Rating:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"imdb_rating\" maxlength=5 size=6 accesskey=\"i\" /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"><u>D</u>escription:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><textarea type=\"text\" name=\"description\" cols=30 rows=5 accesskey=\"d\"></textarea></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"><u>A</u>ctors:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"actor1\" maxlength=50 size=30 accesskey=\"a\" /></td>\n\t\t\t\t\t</tr>"; | |
for ($i=2; $i <= 10; $i++) { | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"actor".$i."\" maxlength=50 size=30 /></td>\n\t\t\t\t\t</tr>"; | |
} | |
print "\n\t\t\t\t</table>\n\t\t\t\t<p><input type=\"submit\" value=\"Add Movie\" /></p>\n\t\t\t</form>"; | |
} | |
sub PrintEdit { | |
my ($id,$title,$genre,$year,$runtime,$mpaa,$imdb,$description) = @_; | |
#present a form for editing a movie in the database | |
print "\n\t\t\t<form id=\"add_movie\" action=\"/cgi-bin/movies.pl\" method=\"get\" ENCTYPE=\"application/x-www-form-urlencoded\">"; | |
print "\n\t\t\t\t<div><input type=\"hidden\" name=\"action\" value=\"edit\" /></div>"; | |
print "\n\t\t\t\t<div><input type=\"hidden\" name=\"update\" value=\"1\" /></div>"; | |
print "\n\t\t\t\t<div><input type=\"hidden\" name=\"id\" value=\"".$id."\" /></div>"; | |
print "\n\t\t\t\t<table class=\"center\">"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"><a id=\"search\" class=\"label\">Edit Movie:</a></td>\n\t\t\t\t\t\t<td class=\"label\" valign=\"middle\" align=\"right\">Movie <u>T</u>itle:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"title\" maxlength=50 size=30 accesskey=\"t\" value=\"".$title."\" /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"><u>Y</u>ear:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"year\" maxlength=4 size=6 accesskey=\"y\" value=\"".$year."\" /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"><u>G</u>enre:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"genre\" maxlength=20 size=20 accesskey=\"g\" value=\"".$genre."\" /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\">R<u>u</u>ntime:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"runtime\" maxlength=8 size=10 accesskey=\"u\" value=\"".$runtime."\" /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\">MPAA <u>R</u>ating:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"mpaa_rating\" maxlength=5 size=6 accesskey=\"r\" value=\"".$mpaa."\" /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"><u>I</u>MDB Rating:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><input type=\"text\" name=\"imdb_rating\" maxlength=5 size=6 accesskey=\"i\" value=\"".$imdb."\" /></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"> </td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"right\"><u>D</u>escription:</td>\n\t\t\t\t\t\t<td valign=\"middle\" align=\"left\"><textarea type=\"text\" name=\"description\" cols=30 rows=5 accesskey=\"d\">".$description."</textarea></td>\n\t\t\t\t\t</tr>"; | |
print "\n\t\t\t\t</table>\n\t\t\t\t<p><input type=\"submit\" value=\"Apply Changes\" /></p>\n\t\t\t</form>"; | |
} | |
sub PrintDetails { | |
my ($id) = @_; | |
my ($sql_query,$statement_handle,$result_handle); | |
my ($title,$year,$genre,$runtime,$mpaa,$imdb,$description); | |
$sql_query = "SELECT * FROM movies WHERE id='".$id."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': #".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
while ($result_handle = $statement_handle->fetchrow_hashref()) { | |
$title = $result_handle->{'title'}; | |
$genre= $result_handle->{'genre'}; | |
$year = $result_handle->{'year'}; | |
$runtime = $result_handle->{'runtime'}; | |
$mpaa = $result_handle->{'mpaa_rating'}; | |
$imdb = $result_handle->{'imdb_rating'}; | |
$description = $result_handle->{'description'}; | |
} | |
print "\n\t\t\t<table class=\"center\">\n\t\t\t\t"; | |
print "<tr>\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" >Title:</td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" >$title</td>\n\t\t\t\t</tr>"; | |
print "<tr>\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" >Genre:</td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" >$genre</td>\n\t\t\t\t</tr>"; | |
print "<tr>\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" >Year Produced:</td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" >$year</td>\n\t\t\t\t</tr>"; | |
print "<tr>\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" >Runtime:</td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" >$runtime</td>\n\t\t\t\t</tr>"; | |
print "<tr>\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" >MPAA Rating:</td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" >$mpaa</td>\n\t\t\t\t</tr>"; | |
print "<tr>\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" >IMDB Rating:</td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" >$imdb</td>\n\t\t\t\t</tr>"; | |
print "<tr>\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" >Description:</td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" >$description</td>\n\t\t\t\t</tr>"; | |
print "\n\t\t\t</table>"; | |
} | |
sub PrintHomeLink { | |
print "\n\t\t\t<p><a href=\"/movies/\" class=\"underline\"><i>Home Page</i></a></p>\n\t\t</div>"; | |
} | |
sub PrintFooter { | |
print "\n\t\t</div>\n\t\t<hr />\n\t\t<div class=\"logos\">\n\t\t\t<p><a href=\"http://validator.w3.org/check?uri=referer\"><img class=\"no_border\" src=\"/images/valid-xhtml11.png\" alt=\"Valid XHTML 1.1\" /></a><a href=\"http://jigsaw.w3.org/css-validator/\"><img class=\"no_border\" src=\"/images/vcss.png\" alt=\"Valid CSS\" height=\"31\" width=\"88\" /></a><a href=\"http://www.anybrowser.org/campaign/\"><img class=\"no_border\" src=\"/images/w3c-anybrowser.png\" alt=\"Valid in Any Browser\" height=\"31\" width=\"88\" /></a></p>\n\t\t\t<p><a href=\"http://use.perl.org/\"><img class=\"no_border\" src=\"/images/useperl.gif\" alt=\"Use PERL;\" /></a></p>\n\t\t\t<p>Real programmers can write assembly code in any language. :-) <br /> --Larry Wall in <8571\@jpl-devvax.JPL.NASA.GOV></p>\n\t\t</div>"; | |
print "\n\t</body>\n</html>\n"; | |
} | |
#============================= | |
# Database | |
sub AuditNewRecord { | |
my ($table,$row_id) = @_; | |
my ($sql_query, $statement_handle); | |
#global $user_id; #this value will be set into the user_id filed once user authentication and tracking is built | |
$sql_query = "INSERT INTO audit SET date=CURDATE(), time=CURTIME(), table_name='".$table."', row_id='".$row_id."', field_name='', old_value='', user_id=''"; | |
$database_handle->do($sql_query) || die "Couldn't do query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
} | |
sub UpdateRecord { | |
my ($table,$field_name,$row_id,$newval) = @_; | |
my ($sql_query,$statement_handle); | |
my $result_handle; | |
#global $user_id; #this value will be set into the user_id filed once user authentication and tracking is built | |
$sql_query = "SELECT ".$field_name." FROM ".$table." WHERE ID='".$row_id."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$result_handle = $statement_handle->fetchrow_hashref(); | |
if($result_handle->{$field_name} ne $newval) { | |
$sql_query = "UPDATE ".$table." SET ".$field_name."='".$newval."' WHERE ID='".$row_id."'"; | |
$database_handle->do($sql_query) || die "Couldn't do query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$sql_query = "INSERT INTO audit SET date=CURDATE(), time=CURTIME(), table_name='".$table."', row_id='".$row_id."', field_name='".$field_name."', old_value='".$result_handle->{$field_name}."'"; | |
$database_handle->do($sql_query) || die "Couldn't do query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
} | |
} | |
#============================ | |
# Movies | |
sub GetMovieById { #returns record hash for movie | |
my $movie_id = shift; | |
my ($sql_query,$statement_handle,$rows,$result_handle); | |
$sql_query = "SELECT * FROM movies WHERE id='".$movie_id."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
if ($rows = $statement_handle->rows()) { | |
$result_handle = $statement_handle->fetchrow_hashref(); | |
return($result_handle); | |
} else { | |
return(0); | |
} | |
} | |
sub GetMovieByTitle { #returns record hash for movie | |
my $title = shift; | |
my ($sql_query,$statement_handle,$rows,$result_handle); | |
$sql_query = "SELECT * FROM movies WHERE title='".$title."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
if ($rows = $statement_handle->rows()) { | |
$result_handle = $statement_handle->fetchrow_hashref(); | |
return($result_handle); | |
} else { | |
return(0); | |
} | |
} | |
sub GetMoviesByActorName { #returns a list of movie IDs | |
my $actor_name = shift; | |
my %actor = GetActorByName($actor_name); | |
my ($sql_query,$statement_handle,$rows,$result_handle); | |
$sql_query = "SELECT * FROM cast WHERE actor_id='".$actor{'id'}."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
if ($rows = $statement_handle->rows()) { | |
$result_handle = $statement_handle->fetchrow_hashref(); | |
return($result_handle); | |
} else { | |
return(0); | |
} | |
} | |
sub GetMoviesByActorId { | |
my $movie_id = shift; | |
my ($sql_query,$statement_handle,$rows,$result_handle); | |
$sql_query = "SELECT * FROM movies WHERE ID='".$movie_id."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
if ($rows = $statement_handle->rows()) { | |
$result_handle = $statement_handle->fetchrow_hashref(); | |
return($result_handle); | |
} else { | |
return(0); | |
} | |
} | |
sub DeleteMovie { | |
my $row_id = shift; | |
UpdateRecord("movies","deleted",$row_id,1); | |
} | |
#============================ | |
# Actors | |
sub AddNewActor { | |
my ($actor_name) = shift; | |
my ($sql_query,$statement_handle,$newactorid); | |
#global $user_id; #this value will be set into the user_id filed once user authentication and tracking is built | |
$sql_query = "INSERT INTO actors SET name='".$actor_name."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$newactorid = $database_handle->{'mysql_insertid'}; | |
#print "\nDEBUG: New Actor ID is \"".$newactorid."\" from \"Add New Actor\".\n"; | |
AuditNewRecord("actors",$newactorid); | |
} | |
sub GetActorByID { | |
my $movie_id = shift; | |
my ($sql_query,$statement_handle,$rows,$result_handle); | |
$sql_query = "SELECT * FROM movies WHERE id='".$movie_id."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
if ($rows = $statement_handle->rows()) { | |
$result_handle = $statement_handle->fetchrow_hashref(); | |
return($result_handle); | |
} else { | |
return(0); | |
} | |
} | |
sub GetActorByName { | |
my $actor_name = shift; | |
my ($sql_query,$statement_handle,$rows,$result_handle); | |
$sql_query = "SELECT * FROM actors WHERE name='".$actor_name."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
if ($rows = $statement_handle->rows()) { | |
$result_handle = $statement_handle->fetchrow_hashref(); | |
#print "\nDEBUG: Actor's Name is: \"".$result_handle->{'name'}."\" from \"Get Actor By Name\".\n"; | |
return($result_handle); | |
} else { | |
#print "\nDEBUG: Returning 'False' from \"Get Actor By Name\". \n"; | |
return(0); | |
} | |
} | |
sub DeleteActor { | |
my $row_id = shift; | |
UpdateRecord("actors","deleted",$row_id,1); | |
} | |
#============================ | |
# Cast | |
sub AddToCast { | |
my ($actor_id, $movie_id) = @_; | |
my ($sql_query,$statement_handle,$id); | |
$sql_query = "INSERT INTO cast SET actor_id='".$actor_id."', movie_id='".$movie_id."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$id = $actor_id."-".$movie_id; | |
#print "\nDEBUG: Added \"".$id."\" from \"Add To Cast\". \n"; | |
AuditNewRecord("cast",$id); | |
} | |
#============================ | |
# MAIN | |
#Print HTML header line | |
print header; | |
#Create add'l broswe options fromv "browse" page: | |
#genre | |
#actors | |
#year(s)[range of years] | |
#director | |
#producer | |
# | |
# | |
if(param("action") eq "browse") { | |
my ($result_handle, $movie_id, $title); | |
my ($sql_query,$statement_handle); | |
PrintHeader(); | |
PrintPageTitle('Complete Movie List'); | |
PrintNavBar(); | |
$sql_query = "SELECT * FROM movies WHERE (deleted IS NULL OR deleted='0')"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
print "\n\t\t\t<table class=\"center\">"; | |
while ($result_handle = $statement_handle->fetchrow_hashref()) { | |
$movie_id = $result_handle->{'id'}; | |
$title = $result_handle->{'title'}; | |
print "\n\t\t\t\t<tr>"; | |
print "\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" >".$title."</td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" >[ <a href=\"/cgi-bin/movies.pl?action=details&id=".$movie_id."\">details</a> | <a href=\"/cgi-bin/movies.pl?action&equalsedit&id=".$movie_id."\">edit</a> | <a href=\"/cgi-bin/movies.pl?action=delete&id&euqals;".$movie_id."\">delete</a> ]</td>"; | |
print "\n\t\t\t\t</tr>"; | |
} | |
print "\n\t\t\t</table>"; | |
PrintHomeLink(); | |
PrintFooter(); | |
} elsif(param("action") eq "search") { | |
PrintHeader(); | |
PrintPageTitle("Search Page"); | |
PrintNavBar(); | |
# Include a pertial text search: | |
# Radio Buttoms for "Exact match"; "Begins with..."; Ends with..." or "Contains..." | |
# SECLECT * FROM [Table] WHERE [Field] LIKE '%[contains value]%' | |
# | |
# SECLECT * FROM [Table] WHERE [Field] LIKE '[beginning value]%' | |
# | |
# SECLECT * FROM [Table] WHERE [Field] LIKE '%[ending value]' | |
# | |
# SECLECT * FROM [Table] WHERE [Field] = '[exact value]' | |
# | |
# | |
# Search by alphabet: | |
# SECLECT * FROM [Table] WHERE [Field] LIKE 'a%' | |
# | |
# SECLECT * FROM [Table] WHERE [Field] LIKE 'b%' | |
# | |
# SECLECT * FROM [Table] WHERE [Field] LIKE 'c%' | |
# | |
PrintSearch(); | |
PrintHomeLink(); | |
PrintFooter(); | |
} elsif(param("action") eq "search_results") { | |
#print "\nDEBUG: Action = '".param("action")."' from 'search_results' section. [line 316]\n"; | |
#print "\nDEBUG: Type = '".param("type")."' from 'search_results' section. [line 316]\n"; | |
#print "\nDEBUG: Value = '".param("value")."' from 'search_results' section. [line 317]\n"; | |
if (param("value") eq "" or param("value") eq " ") { #if "value" is empty | |
my $type; | |
PrintHeader(); | |
PrintPageTitle('Search Page'); | |
PrintNavBar(); | |
if (param("type") eq "movie") { | |
$type = "Movie Title" | |
} elsif (param("type") eq "actor") { | |
$type = "Actor Name" | |
} elsif (param("type") eq "year") { | |
$type = "Year Released" | |
} elsif (param("type") eq "genre") { | |
$type = "Genre" | |
} | |
print "\n\t\t\<span class=\"status_error\">The search value for \"".$type."\" cannot be blank.</span><br /><br />"; | |
PrintSearch(); | |
PrintHomeLink(); | |
PrintFooter(); | |
} else { #if "value" is not empty | |
my ($sql_query,$statement_handle,$result_handle,$rh,$sth,$sql); | |
my ($actorid,$movieid,$value,$title); | |
$value = join ' ', map { ucfirst lc } split / /, param("value"); | |
PrintHeader(); | |
PrintPageTitle("Search Results for ".$value); | |
PrintNavBar(); | |
print "\n\t\t\t<table class=\"center\">"; | |
if (param("type") eq "movie") { | |
#title case the title to match entry in database | |
$value=~s/([\w']+)/\u\L$1/g; | |
$value=~s/(\sa |an |the |and |if |then |else |when |up |at |from |by |on |at |for |is |in |of |to \s)/\L$1/ig; | |
$value=~s/^(\w)/\u$1/; | |
$sql_query = "SELECT * FROM movies WHERE title='".$value."' AND (deleted IS NULL OR deleted='0')"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
if ($statement_handle->rows()) { #if result found | |
while ($result_handle = $statement_handle->fetchrow_hashref()) { | |
$movieid = $result_handle->{'id'}; | |
$title = $result_handle->{'title'}; | |
print "\n\t\t\t\t<tr>"; | |
print "\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" >".$title."</td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" >[ <a href=\"/cgi-bin/movies.pl?action=details&id=".$movieid."\">details</a> | <a href=\"/cgi-bin/movies.pl?action=edit&id=".$movieid."\">edit</a> | <a href=\"/cgi-bin/movies.pl?action=delete&id=".$movieid."\">delete</a> ]</td>"; | |
print "\n\t\t\t\t</tr>"; | |
} | |
}else{ #if no result | |
print "\n\t\t\t<h2 class=\"status_error\">No Search Results for ".$value."</h2>"; | |
}#endif for "title" | |
} elsif (param("type") eq "actor") { | |
#get actor id from database | |
$sql_query = "SELECT id FROM actors WHERE name='".$value."' AND (deleted IS NULL OR deleted='0')"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$result_handle = $statement_handle->fetchrow_hashref(); | |
if ($statement_handle->rows()) { #if result found | |
$actorid = $result_handle->{'id'}; | |
#get movie ids for this actor id | |
$sql_query = "SELECT movie_id FROM cast WHERE actor_id='".$actorid."' AND (deleted IS NULL OR deleted='0')"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
if ($statement_handle->rows()) { #if result found | |
while ($result_handle = $statement_handle->fetchrow_hashref()) { | |
$movieid = $result_handle->{'movie_id'}; | |
$sql = "SELECT * FROM movies WHERE id='".$movieid."' AND (deleted IS NULL OR deleted='0')"; | |
$sth = $database_handle->prepare($sql) || die "Couldn't prepare query '".$sql."': ".$database_handle->{'mysql_error'}."\n"; | |
$sth->execute() || die "Couldn't execute query '".$sql."': ".$database_handle->{'mysql_error'}."\n"; | |
if ($statement_handle->rows()) { #if result found | |
while ($rh = $sth->fetchrow_hashref()) { | |
$movieid = $rh->{'id'}; | |
$title = $rh->{'title'}; | |
print "\n\t\t\t\t<tr>"; | |
print "\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" >".$title."</td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" >[ <a href=\"/cgi-bin/movies.pl?action=details&id=".$movieid."\">details</a> | <a href=\"/cgi-bin/movies.pl?action=edit&id=".$movieid."\">edit</a> | <a href=\"/cgi-bin/movies.pl?action=delete&id=".$movieid."\">delete</a> ]</td>"; | |
print "\n\t\t\t\t</tr>"; | |
}#end while for movie_id from movie | |
}else{ | |
print "\n\t\t\t<h2 class=\"status_error\">No Search Results for Movie ID:".$movieid."</h2>"; | |
}#end if for movie search results from movies | |
}#end while for movie_id from cast | |
}else{ | |
print "\n\t\t\t<h2 class=\"status_error\">No Search Results for ".$value.". Not found in cast list for current movies in database.</h2>"; | |
}#end if for search results for actor_id from cast | |
}else{ | |
print "\n\t\t\t<h2 class=\"status_error\">No Search Results for ".$value.". Actor not found in database.</h2>"; | |
}#end if for search results for actor name from actors | |
} elsif (param("type") eq "year") { | |
$sql_query = "SELECT * FROM movies WHERE year='".$value."' AND (deleted IS NULL OR deleted='0')"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
if ($statement_handle->rows()) { #if result found | |
while ($result_handle = $statement_handle->fetchrow_hashref()) { | |
$movieid = $result_handle->{'id'}; | |
$title = $result_handle->{'title'}; | |
print "\n\t\t\t\t<tr>"; | |
print "\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" >".$title."</td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" >[ <a href=\"/cgi-bin/movies.pl?action=details&id=".$movieid."\">details</a> | <a href=\"/cgi-bin/movies.pl?action=edit&id=".$movieid."\">edit</a> | <a href=\"/cgi-bin/movies.pl?action=delete&id=".$movieid."\">delete</a> ]</td>"; | |
print "\n\t\t\t\t</tr>"; | |
} | |
}else{ #if no result | |
print "\n\t\t\t<h2 class=\"status_error\">No Search Results for ".$value."</h2>"; | |
}#endif for "title" | |
} elsif (param("type") eq "genre") { | |
my $value = join ' ', map { ucfirst lc } split / /, param("value"); | |
$sql_query = "SELECT * FROM movies WHERE genre='".$value."' AND (deleted IS NULL OR deleted='0')"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
if ($statement_handle->rows()) { #if result found | |
while ($result_handle = $statement_handle->fetchrow_hashref()) { | |
$movieid = $result_handle->{'id'}; | |
$title = $result_handle->{'title'}; | |
print "\n\t\t\t\t<tr>"; | |
print "\n\t\t\t\t\t<td class=\"list_left\" valign=\"middle\" align=\"right\" >".$title."</td>\n\t\t\t\t\t<td class=\"list_right\" valign=\"middle\" align=\"left\" >[ <a href=\"/cgi-bin/movies.pl?action=details&id=".$movieid."\">details</a> | <a href=\"/cgi-bin/movies.pl?action=edit&id=".$movieid."\">edit</a> | <a href=\"/cgi-bin/movies.pl?action=delete&id=".$movieid."\">delete</a> ]</td>"; | |
print "\n\t\t\t\t</tr>"; | |
} | |
}else{ #if no result | |
print "\n\t\t\t<h2 class=\"status_error\">No Search Results for ".$value."</h2>"; | |
}#endif for "title" | |
}#endif for "type" | |
print "\n\t\t\t</table>"; | |
PrintHomeLink(); | |
PrintFooter(); | |
}#endif for "value" | |
} elsif(param("action") eq "details") { | |
my ($id, $sql_query,$statement_handle,$result_handle); | |
PrintHeader; | |
PrintPageTitle("Movie Details"); | |
PrintNavBar(); | |
# get one movie and show all the data about this one movie. | |
$id = param("id"); | |
PrintDetails($id); | |
PrintHomeLink(); | |
PrintFooter(); | |
} elsif(param("action") eq "add") { | |
if (param("insert") == 1) { | |
# create the database record | |
my ($sql_query,$statement_handle); | |
my ($i, $actor,$actor_record_handle,$movie_record_handle,$newmovieid,$actorid); | |
#movie varables | |
# using map function to apply ucfirst and lc to all words (determined by split) from params | |
my $title = join ' ', map { ucfirst lc } split / /, param("title"); | |
my $year = param("year"); | |
my $genre = join ' ', map { ucfirst lc } split / /, param("genre"); | |
my $runtime = param("runtime"); | |
my $mpaa_rating = uc(param("mpaa_rating")); | |
my $imdb_rating = param("imdb_rating"); | |
my $description = param("description"); | |
#title case the title | |
$title=~s/([\w']+)/\u\L$1/g; | |
$title=~s/(\sa |an |the |and |if |then |else |when |up |at |from |by |on |at |for |is |in |of |to \s)/\L$1/ig; | |
$title=~s/^(\w)/\u$1/; | |
#add movie to database | |
$sql_query = "INSERT INTO movies SET title='".$title."', genre='".$genre."', year='".$year."', runtime='".$runtime."', mpaa_rating='".$mpaa_rating."', imdb_rating='".$imdb_rating."', description='".$description."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': #".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$newmovieid = $database_handle->{'mysql_insertid'}; | |
AuditNewRecord("movies",$newmovieid); | |
#now search the actor fields | |
for ($i = 1;$i <= 10 ; $i++) { | |
#pull datafrom field and set to proper case | |
$actor = join ' ', map { ucfirst lc } split / /, param("actor".$i); | |
#check for a name in the current field and run following code only if there is a name | |
unless ($actor eq "") { | |
#search for existing actor in the database | |
#print "\nDEBUG: Getting actor_record_handle from \"Get Actor By Name\" for \"".$actor."\" actor#".$i.".[add section]\n"; | |
$actor_record_handle = GetActorByName($actor); | |
#If no existing actor, then add the actor to the database and get the id | |
#Get the id for existing actor | |
#print "\nDEBUG: Getting actor_record_handle \"".$actor_record_handle."\" from \"Get Actor By Name\" for \"".$actor."\" actor#".$i.".[add section]\n"; | |
if ($actor_record_handle == 0) { | |
#print "\nDEBUG: Adding new actor and getting actorid from \"Add New Actor\" for \"".$actor."\" actor#".$i.".[add section]\n"; | |
$actorid = AddNewActor($actor); | |
#print "DEBUG: Actor id = ".$actorid.". [add section]\n"; | |
} else { | |
#print "DEBUG: Actor name is \"".$actor_record_handle->{'name'}."\" from \"Get Actor By Name\".[add section]\n"; | |
#print "DEBUG: Actor id is \"".$actor_record_handle->{'id'}."\" from \"Get Actor By Name\".[add section]\n"; | |
$actorid = $actor_record_handle->{'id'}; | |
} | |
#add the actor to the movie's cast | |
AddToCast($actorid,$newmovieid); | |
} | |
} | |
$movie_record_handle = GetMovieById($newmovieid); | |
PrintHeader(); | |
PrintPageTitle('Add Movie'); | |
PrintNavBar(); | |
print "\n\t\t\<span class=\"status_info\">Movie '".$movie_record_handle->{'title'}."' added.</span><br /><br />"; | |
PrintAdd(); | |
PrintHomeLink(); | |
PrintFooter(); | |
} else { | |
PrintHeader(); | |
PrintPageTitle('Add Movie'); | |
PrintNavBar(); | |
PrintAdd(); | |
PrintHomeLink(); | |
PrintFooter(); | |
}#endif | |
} elsif(param("action") eq "edit") { | |
my ($movie_id,$sql_query,$statement_handle,$result_handle); | |
PrintHeader(); | |
#present a form for adding a new movie to the database | |
if (param('id')) { | |
if (param("update") == 1) { | |
$sql_query = "SELECT * FROM movies WHERE id='".param('id')."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': #".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
while ($result_handle = $statement_handle->fetchrow_hashref()) { | |
unless ($result_handle->{'title'} eq param('title')) { | |
UpdateRecord("movies","title",$result_handle->{'id'},param('title')); | |
} | |
unless ($result_handle->{'genre'} eq param('genre')) { | |
UpdateRecord("movies","genre",$result_handle->{'id'},param('genre')); | |
} | |
unless ($result_handle->{'year'} eq param('year')) { | |
UpdateRecord("movies","year",$result_handle->{'id'},param('year')); | |
} | |
unless ($result_handle->{'runtime'} eq param('runtime')) { | |
UpdateRecord("movies","runtime",$result_handle->{'id'},param('runtime')); | |
} | |
unless ($result_handle->{'mpaa_rating'} eq param('mpaa_rating')) { | |
UpdateRecord("movies","mpaa_rating",$result_handle->{'id'},param('mpaa_rating')); | |
} | |
unless ($result_handle->{'imdb_rating'} eq param('imdb_rating')) { | |
UpdateRecord("movies","imdb_rating",$result_handle->{'id'},param('imdb_rating')); | |
} | |
unless ($result_handle->{'description'} eq param('description')) { | |
UpdateRecord("movies","description",$result_handle->{'id'},param('description')); | |
} | |
} | |
PrintPageTitle("Search Page"); | |
PrintNavBar(); | |
print "\n\t\t\t<h2 class=\"status_info\">Movie '".param('title')."' has been updated.</h2>"; | |
PrintSearch(); | |
PrintHomeLink(); | |
PrintFooter(); | |
}else{ | |
PrintPageTitle("Edit Movie"); | |
PrintNavBar(); | |
my ($result_handle, $movie_id); | |
my ($sql_query,$statement_handle); | |
$movie_id = param('id'); | |
$sql_query = "SELECT * FROM movies WHERE id='".$movie_id."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': #".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
while ($result_handle = $statement_handle->fetchrow_hashref()) { | |
my ($id,$title,$genre,$year,$runtime,$mpaa,$imdb,$description); | |
$id = $result_handle->{"id"}; | |
$title = $result_handle->{"title"}; | |
$year = $result_handle->{"year"}; | |
$genre = $result_handle->{"genre"}; | |
$runtime = $result_handle->{"runtime"}; | |
$mpaa = $result_handle->{"mpaa_rating"}; | |
$imdb = $result_handle->{"imdb_rating"}; | |
$description = $result_handle->{"description"}; | |
PrintEdit($id,$title,$genre,$year,$runtime,$mpaa,$imdb,$description); | |
} | |
PrintHomeLink(); | |
PrintFooter(); | |
}#endif | |
#if no movie id, present a form selecting a movie from the database to delete | |
} else { | |
PrintPageTitle("Search Page"); | |
PrintNavBar(); | |
print "\n\t\t\t<h2 class=\"status_error\">Please search for the movie that you would like to edit.</h2>"; | |
PrintSearch(); | |
PrintHomeLink(); | |
PrintFooter(); | |
} | |
} elsif(param("action") eq "delete") { | |
my ($movie_id,$sql_query,$statement_handle,$result_handle); | |
PrintHeader; | |
#if we have the movie id, confirm delete | |
if (param('id')) { | |
if (param("delete") == 1) { | |
DeleteMovie(param('id')); | |
$sql_query = "SELECT * FROM movies WHERE id='".param('id')."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': #".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
$result_handle = $statement_handle->fetchrow_hashref(); | |
PrintPageTitle("Search Page"); | |
PrintNavBar(); | |
print "\n\t\t\t<h2 class=\"status_info\">'".$result_handle->{"title"}."' has been deleted.</h2>"; | |
PrintSearch(); | |
PrintHomeLink(); | |
PrintFooter(); | |
}else{ | |
PrintPageTitle("Confirm Delete"); | |
PrintNavBar(); | |
my ($result_handle, $movie_id, $title); | |
my ($sql_query,$statement_handle); | |
$movie_id = param('id'); | |
$sql_query = "SELECT * FROM movies WHERE id='".$movie_id."'"; | |
$statement_handle = $database_handle->prepare($sql_query) || die "Couldn't prepare query '".$sql_query."': #".$database_handle->{'mysql_error'}."\n"; | |
$statement_handle->execute() || die "Couldn't execute query '".$sql_query."': ".$database_handle->{'mysql_error'}."\n"; | |
while ($result_handle = $statement_handle->fetchrow_hashref()) { | |
$title = $result_handle->{'title'}; | |
print "\n\t\t\t<h2 class=\"status_error\">Are you sure that you want to delete '".$title."' from the database?</h2>\n\t\t\t<form id=\"add_movie\" action=\"/cgi-bin/movies.pl\" method=\"get\" ENCTYPE=\"application/x-www-form-urlencoded\">"; | |
print "\n\t\t\t\t<div><input type=\"hidden\" name=\"action\" value=\"delete\" /></div>"; | |
print "\n\t\t\t\t<div><input type=\"hidden\" name=\"delete\" value=\"1\" /></div>"; | |
print "\n\t\t\t\t<div><input type=\"hidden\" name=\"id\" value=\"".$movie_id."\" /></div>"; | |
print "<input type=\"submit\" value=\"Confirm Delete\" />"; | |
} | |
PrintHomeLink(); | |
PrintFooter(); | |
}#endif | |
#if no movie id, present a form for selecting a movie from the database to delete | |
} else { | |
PrintPageTitle("Search Page"); | |
PrintNavBar(); | |
print "\n\t\t\t<h2 class=\"status_error\">Please search for the movie that you would like to delete.</h2>"; | |
PrintSearch(); | |
PrintHomeLink(); | |
PrintFooter(); | |
} | |
} else { | |
PrintHeader(); | |
PrintHome(); | |
PrintFooter(); | |
} | |
$database_handle->disconnect(); | |
#print redirect('http://www.karlwilbur.net/cgi-bin/movies.pl'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment