Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

How to retain a value passed from another link to a script

by terrykhatri (Acolyte)
on Jul 11, 2014 at 17:27 UTC ( [id://1093264]=perlquestion: print w/replies, xml ) Need Help??

terrykhatri has asked for the wisdom of the Perl Monks concerning the following question:

favorite I am calling a script from a HTML Template giving it a value to load the script as follows:
<a href="orddetails.pl?go=Details&orderid=<!-- TMPL_VAR NAME=OrderID - +->">Details</a>
The script gets executed with the value passed however I cannot use this value in other routines within the same script i.e. orddetails.pl, so the question is how can I retain this value, I am already declaring a Global variable for it :
my $orderid = $q->param('orderid');
Rgds. Terry

Replies are listed 'Best First'.
Re: How to retain a value passed from another link to a script
by SuicideJunkie (Vicar) on Jul 11, 2014 at 17:43 UTC

    You need to show your code if you want help with it.

    First thoughts:

    1. Show the function that can't see the value
    2. Show the function that can see the value
    3. Show the differences between the two functions; where they are located, how they are called.

      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; }
        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
Re: How to retain a value passed from another link to a script
by Anonymous Monk on Jul 11, 2014 at 17:56 UTC
    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.
Re: How to retain a value passed from another link to a script
by Anonymous Monk on Jul 11, 2014 at 23:31 UTC
A reply falls below the community's threshold of quality. You may see it by logging in.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1093264]
Approved by AppleFritter
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (7)
As of 2024-04-19 12:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found