| [reply] |
Hi,
Here is the script, the ELSE routine of Action EDIT gets execute, when I click on EDIT button this Action does not get excuted the form shows up empty with $ordered as null,
I can't get to Action UPDATE because it comes after Action EDIT.
#!/usr/local/bin/perl
use strict;
use CGI;
use CGI::Carp 'fatalsToBrowser'; #remove for prod
use DBI;
# get form parameters
my $q = new CGI;
my $action = $q->param('go');
my $orderid = $q->param('orderid');
my $msg = "";
my $dbh = dbh(); # connect to db
$dbh->do("SET search_path to northwind") or die;
my $sql = 'SELECT
a."OrderID", b."ProductName", a."UnitPrice", a."Quantity"
+, a."Discount"
FROM
"Order_Details" a, "Products" b
WHERE
a."ProductID" = b."ProductID" AND "OrderID" = ? ';
my $hr = $dbh->selectrow_hashref($sql,undef,$orderid);
#change validation to suit
if ( ($action eq "UPDATE") && ($orderid =~ /\d+/)) {
my $sql = qq! UPDATE
"Order_Details"
SET
"UnitPrice" = ?,
"Quantity" = ?,
"Discount" = ?
WHERE "OrderID" = ? !;
my $count = $dbh->do( $sql,undef,$orderid );
$msg = "$count Record updated - $sql, $orderid";
} else {
$msg = "Please complete form";
}
# build html page
my $style = q!
body { background-color: pink ; color: #3300cc; }
.container { width: 500px; clear: both; }
.container input { width: 100%; clear: both;}
!;
# Send out the header and form
print $q->header;
print $q->start_html(-title=>'Order details',
-style=>{ -code=>$style } );
if ( ($action eq "EDIT") && ($orderid =~ /\d+/)) {
print qq!<h1 style="color:3300CC">Update Order Details for order # ?
+</h1>!;
print qq!<div class="container">
<form action="" method="post">
<input type="hidden" name="ordid" value="$hr->{'OrderID'}"/>
Product Name :<input name="productname" value="$hr->{'ProductName'}" r
+eadonly/><br/>
Unit Price :<input name="unitprice" value="$hr->{'UnitPrice'}" /><br/>
Quantity :<input name="quantity" value="$hr->{'Quantity'}" /><br/>
Discount :<input name="discount" value="$hr->{'Discount'}" /><br/>
<input type="submit" name="go" value="UPDATE"/>
</form></div><hr/>!;
$msg = "";
} else {
print qq!<h1 style="color:3300CC">Order Details for order # $orderid</
+h1>!;
print qq!<div class="container">
<form action="" method="post">
<input type="hidden" name="ordid" value="$hr->{'OrderID'}"/>
Product Name :<input name="productname" value="$hr->{'ProductName'}" r
+eadonly/><br/>
Unit Price :<input name="unitprice" value="$hr->{'UnitPrice'}" readonl
+y/><br/>
Quantity :<input name="quantity" value="$hr->{'Quantity'}" readonly/><
+br/>
Discount :<input name="discount" value="$hr->{'Discount'}" readonly/><
+br/>
<input type="submit" name="go" value="EDIT"/>
</form></div><hr/>!;
$msg = "Record details fetched - $sql, $orderid";
}
# Standard links to the rest of the application
print <<"FOOTER";
<b>$msg</b>
<hr/>
Jump to - <a href="viewemp.pl">View Employees Listing</a><br/>
Jump to - <a href="addemp.pl">Add an Employee</a><br/>
Jump to - <a href="editemp.pl">Edit an Employee details</a><br/>
Jump to - <a href="updatephoto.pl">Add or update Employee Photo</a><br
+/>
<hr/>
Edited by Terry on July, 06 2014.
FOOTER
print $q->end_html;
# connect to database
sub dbh {
my $dsn = 'DBI:Pg:dbname=northwind;host=localhost';
my $user = 'postgres';
my $pwd = 'postgres';
my $dbh = DBI -> connect($dsn,$user,$pwd,{'RaiseError' => 1});
return $dbh;
}
| [reply] [d/l] |
Spot the parameter name difference
my $orderid = $q->param('orderid');
<input type="hidden" name="ordid" value="$hr->{'OrderID'}"/>
When you fix that this will fail (not enough bind variables)
my $sql = qq! UPDATE
"Order_Details"
SET
"UnitPrice" = ?,
"Quantity" = ?,
"Discount" = ?
WHERE "OrderID" = ? !;
my $count = $dbh->do( $sql,undef,$orderid );
poj | [reply] [d/l] [select] |
Crosspost at SO -> http://stackoverflow.com/questions/24702720/perl-cgi-how-to-retain-a-value-passed-from-another-link-to-a-script and Perl Guru -> http://perlguru.com/gforum.cgi?post=79160;guest=15616651#79160 already given links to learn perl & CGI in past PM posts. | [reply] |
<a href="<!-- TMPL_VAR NAME=SomeKindOfLinkForOrderID -->">Details</a>
Then give the template return value of MakeSomeKindOfLinkForOrderID($query)
Same idea , subs subs subs Re: pagination links (logic) | [reply] [d/l] |