#!/usr/bin/perl -wT
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use DBI;
use strict;

print header;
print start_html("Order Form - Step 2");

my $dbh = DBI->connect( "dbi:mysql:products", "webserver", "", { RaiseError =>
 1, AutoCommit => 1 }) or &dienice("Can't connect to database: $DBI::errstr");

print <<EndHead;
<h2 align="CENTER">Order Form - Step 2</h2>
Here's what you've ordered:<br>
<form action="order2.cgi" method="POST">
EndHead

my $sth = $dbh->prepare(qq(select stocknum,name,price from items where status != "OUT" order by stocknum)) or &dbdie;

$sth->execute or &dbdie;

my $subtotal = 0;
while (my($stocknum,$name,$price) = $sth->fetchrow_array) {
    if (param($stocknum)) {
        my($qty) = param($stocknum);
        $subtotal = $subtotal + ($price * $qty);
        print qq(<b>$name</b> (#$stocknum) - $price ea., qty: $qty<br>\n);
        print qq(<input type="hidden" name="$stocknum" value="$qty">\n);
    }
}

if ($subtotal == 0 ) {
    &dienice("You didn't order anything!");
}

print <<EndForm;
<p>
Subtotal:<br> \$$subtotal
<p>
Please enter your shipping information:<br><br>
<pre>

        Your Name: <input type="text" name="name" size=50>
 Shipping Address: <input type="text" name="ship_addr" size=50>
             City: <input type="text" name="ship_city" size=50>
   State/Province: <input type="text" name="ship_state" size=30>
  ZIP/Postal Code: <input type="text" name="ship_zip" size=30>
          Country: <input type="text" name="ship_country" size=30>
            Phone: <input type="text" name="phone" size=30>
            Email: <input type="text" name="email" size=30>
</pre>
Payment Method:
<select name="paytype">
<option value="cc">Credit Card
<option value="check">Check/Money Order
<option>Paypal
</select>
<br><br>

<input type="submit" value="Place Order">
</form>
EndForm

print end_html;

$dbh->disconnect;

sub dienice {
    my ($msg) = @_;
    print "<h2>Error</h2>\n";
    print $msg;
    exit;
}

sub dbdie {
    my($package, $filename, $line) = caller;
    my($errmsg) = "Database error: $DBI::errstr<br>
                called from $package $filename line $line";
    &dienice($errmsg);
}