Please send questions to st10@humboldt.edu .
#!/usr/local/bin/perl -w

# ^NOTE --- I had to change the perl path on sorrel above
#    so this would work!!!

#######################################################
# lab12_insert_reviewer.pl
#
# quick'n'sleazy table populator for the Week 12 Lab
#    Exercise and HW #10 -
# add a reviewer
#
# by Sharon Tuttle
#
# last modified: 11-11-04
#######################################################

use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser warningsToBrowser carpout);

use DBI;

warningsToBrowser(1);  # activate warnings

# PRINT a form for user to react to

print header, "\n";

print start_html(-title=>'insert reviewer'), "\n";

print h1('insert reviewer'), "\n";

print start_form, "\n",

      "Oracle username: \n", 
      textfield(-name=>'oracle_username',
                -size=>15,
                -maxlength=>15), "\n",
      
      br, br, "\n",

      "Oracle password: \n",
      password_field(-name=>'oracle_password',
                     -size=>10,
                     -maxlength=>10), "\n",

      br, br, "\n",
      hr, "\n",

      "Reviewer id (3 digits): \n",
      textfield(-name=>'reviewer_id',
                -size=>3,
                -maxlength=>3), "\n",

      br, br, "\n",

      "Reviewer Last Name (up to 20 characters): \n",
      textfield(-name=>'reviewer_lname',
                -size=>20,
                -maxlength=>20), "\n",

      br, br, "\n",

      "Reviewer's E-mail address (up to 30 characters): \n",
      textfield(-name=>'reviewer_email',
                -size=>30,
                -maxlength=>30), "\n",

      br, br, "\n",

      submit(-value=>'Insert This Reviewer'), "\n",
      endform, "\n";

print hr, "\n";

# if user has hit submit, try to connect to the database and
#    insert this reviewer

if (param())
{
    # set environment variables needed for Oracle database
    #    software

    $ENV{'ORACLE_HOME'} = '/apps1/oracle/product/9iAS/';
    $ENV{'LD_LIBRARY_PATH'} = '/apps1/oracle/product/9iAS/lib';

    # try to connect to database named student reachable with the
    #    above environment informaton, for the account username and
    #    account password given, for an Oracle database
    # (and remember --- what you connect, REMEMBER TO DISCONNECT!!!

    my $username = param('oracle_username')
        or die "Must enter an Oracle username!\n";

    my $password = param('oracle_password')
        or die "Must enter an Oracle password!\n";        

    my $db_handle = DBI->connect('dbi:Oracle:student',
                    "$username", "$password")
        || die "Database connection not made: $DBI::errstr";

    # try to insert this new reviewer

    my $reviewer_id = param('reviewer_id') 
        or die "Must enter a Reviewer Id!\n";
    my $reviewer_lname = param('reviewer_lname')
        or die "Must enter a Reviewer last name!\n";
    my $reviewer_email = param('reviewer_email')
        or die "Must enter a Reviewer e-mail address!\n";

    # ah, but these need SINGLE QUOTES around 'em for the
    #    SQL insert statement!
    my $qreviewer_id = $db_handle->quote($reviewer_id);
    my $qreviewer_lname = $db_handle->quote($reviewer_lname);
    my $qreviewer_email = $db_handle->quote($reviewer_email);

    $db_handle->do("insert into reviewer
                    values
                    ($qreviewer_id, $qreviewer_lname, $qreviewer_email)")
        or die $db_handle->errstr . "\n";

    # let's show the contents of the reviewer table, now
    my $stmt_handle = $db_handle->prepare( 'select *
                                            from reviewer' )
        or die $db_handle->errstr . "\n";

    $stmt_handle->execute();

    my @next_row;

    print h3("Now the reviewer table contains:"), "\n";

    while (@next_row = $stmt_handle->fetchrow_array())
    {
        print "@next_row", br, "\n";
    }

    $stmt_handle->finish;
    print hr, "\n";

    # DON'T FORGET THIS! Not only is it POOR STYLE to do so, but
    #   could cause REAL Oracle performance problems if you leave
    #   it off!!!!!!!!!!!!!

    $db_handle->disconnect;
}

print end_html, "\n";

# end of lab12_table_setup.pl