all sorted now, thanks to you experts. it was because I have prefixed my 
variables with 'my' which restricted them.

On Friday 22 Mar 2002 3:34 pm, Matthew Harrison wrote:
> is there something that says a variable doesn;t get passed when calling a
> sub in the same script? i am working on a web-based role-playing game and
> this is the script for inside the temple:
>
> #!/usr/bin/perl
>
> ##############Modules##############
>
> use CGI qw/:standard/;
> use CGI::Carp "fatalsToBrowser";
> use DBI;
> use CGI::Cookie;
>
> ##########Setup Variables##########
>
> %cookies = fetch CGI::Cookie;
> $id = $cookies{'id'}->value;
>
> $dbh = new CGI;
> $dbh=DBI->connect("DBI:mysql:database=flands;host=127.0.0.1;port=3306",ed
>hunter,*****); die "Could not connect to database" if !$dbh;
>
> $sth = $dbh->prepare("SELECT money FROM chars WHERE id = '$id'");
> if ($sth && $sth->execute()){
>     @results = $sth->fetchrow_array();
> }
> my $money = $results[0];
>
> my $action = param('action');
> my $loc = param('loc');
>
> my $goback = referer();
>
> ###########Initiate#############
>
> if ($action eq "initiate"){
>
>     if ($loc eq "av"){
>     my $cost = 40;
>     my $god = "Alvir and Valmir";
>     my $cash = $money - $cost;
>     my $spec1 = "";
>     my $spec2 = "";
>     addgod();
> }
>
>     if ($loc eq "elnir"){
>     my $cost = 60;
>     my $god = "Elnir";
>     my $cash = $money - $cost;
>     my $spec1 = "";
>     my $spec2 = "";
>     addgod();
> }
>     if ($loc eq "sig"){
>     my $cost = 50;
>     my $god = "Sig";
>     my $cash = $money - $cost;
>     my $spec1 = "theivery";
>     my $spec2 = "1";
>     addgod();
> }
>     if ($loc eq "nagil"){
>     my $god = "Nagil";
>     my $spec1 = "";
>     my $spec2 = "";
>     nagili();
> }
>     if ($loc ne "av" && $loc ne "elnir" && $loc ne "sig" && $loc ne
> "nagil"){
>
> print <<END_OF_HTML
> content-type: text/html
>
> <html>
> <head><title>The Fabled Lands - Lost in the Temple</title></head>
> <body bgcolor="#000000" text="#CCCCCC"><br><br>I'm sorry, but you seem to
> have become lost in the temple, please <a href="$goback">click here</a>
> to trace your way back. If you are sure you went the right way them
> please <a href="mailto:edhunter\@peanutbuttercheesecake.co.uk";>email the
> authors'</a> or if you are managing the database yourself, please update
> your records.</body>
> <html>
> END_OF_HTML
> }
>
> sub nagili{
>
> $dbh = new CGI;
> $dbh=DBI->connect("DBI:mysql:database=flands;host=127.0.0.1;port=3306",ed
>hunter,*****); die "Could not connect to database" if !$dbh;
>
> $sth = $dbh->prepare("SELECT rank FROM chars WHERE id = '$id'");
> if ($sth && $sth->execute()){
>     @results = $sth->fetchrow_array();
> }
>
> my $rank = $results[0];
> my $score = int(rand 6)+1;
> if ($score < $rank){
>     $winlose = "You have been accepted";
> $dbh = new CGI;
> $dbh=DBI->connect("DBI:mysql:database=flands;host=127.0.0.1;port=3306",ed
>hunter,*****); die "Could not connect to database" if !$dbh;
>
> $sth = $dbh->prepare("UPDATE chars SET god = 'Nagil' WHERE id = '$id'");
> if ($sth && $sth->execute()){
> }}
> else{
>     $winlose = "You have been rejected";
> }
> print <<END_OF_HTML
> content-type: text/html
>
> <html>
> <head><title>The Fabled Lands - The Temple of $god</title></head>
> <body bgcolor="#000000" text="#CCCCCC"><br><br>It does not require
> payment to become an initiate of the Temple of Nagil. Instead you are
> made to endure many harsh test, the last of which being burried
> underground in a sealed casket. To represent these tests, you must use
> our Event Generation System (EGS), for information about using the EGS,
> please <a
> href="/flands/help/egs.html">click here</a>. This test represents rolling
> one dice and comparing with your current rank. If you score lower than
> your rank, you will be admitted, otherwise you must leave. To view the
> results of the test, select with your mouse under the dashed line
> below.<br><br>------------------------------<br><br><font
> color="#000000"><b>Your rank:</b> $rank<br><br><b>The Score:</b>
> $score<br><br><b>The Result:</b> $winlose</font><br><br><a
> href="$goback">Return to the Temple Foyer</a>
> </BODY></html>
> END_OF_HTML
> }
>
> sub addgod{
>
>     if ($money < $cost){
> print <<END_OF_HTML
> content-type: text/html
>
> <html>
> <head><title>The Fabled Lands - The Temple of $god</title></head>
> <body bgcolor="#000000" text="#CCCCCC"><br><br>Sorry, but you seem to
> have unsuficcient funds to allow you to partake of the initiation
> ceremony. You must have at least $cost denarii to become an initiate, you
> only have $money.<br>You can come back any time to try again and we will
> be happy to accept you.<br><br><a href="$goback">Retrace your steps</a>
> </BODY></html>
> END_OF_HTML
> }
>     else{
> $dbh = new CGI;
> $dbh=DBI->connect("DBI:mysql:database=flands;host=127.0.0.1;port=3306",ed
>hunter,*****); die "Could not connect to database" if !$dbh;
>
> $sth = $dbh->prepare("UPDATE chars SET god = '$god' WHERE id = '$id'");
> if ($sth && $sth->execute()){
> }
>
> $dbh = new CGI;
> $dbh=DBI->connect("DBI:mysql:database=flands;host=127.0.0.1;port=3306",ed
>hunter,*****); die "Could not connect to database" if !$dbh;
>
> $sth = $dbh->prepare("UPDATE chars SET money = '$cash' WHERE id =
> '$id'"); if ($sth && $sth->execute()){
> }
>
> if ($spec1 ne ""){
>
> $dbh = new CGI;
> $dbh=DBI->connect("DBI:mysql:database=flands;host=127.0.0.1;port=3306",ed
>hunter,*****); die "Could not connect to database" if !$dbh;
>
> $sth = $dbh->prepare("UPDATE chars SET $spec1 = $spec1 + $spec2 WHERE id
> = '$id'");
> if ($sth && $sth->execute()){
> }}
> print <<END_OF_HTML
> content-type: text/html
>
> <html>
> <head><title>The Fabled Lands - The Temple of $god</title></head>
> <body bgcolor="#000000" text="#CCCCCC"><br><br>Thank you for becoming an
> initiate of the Temple of $god, Your donation is gratefully accepted. You
> should now see $god on your stats sheet.<br><br><a href="$goback">Retrace
> your steps</a>
> </BODY></html>
> END_OF_HTML
> }}}
>
>
> -------------------------------------------------------------------------
>--------------------------------- i know it is ulgy, but i am quite new to
> perl. why when the dynamic html page are generated does it show the $god
> and $winlose variabled as being empty? i know the database part works,
> but without the $god variable it will always add a null value to the
> database.
>
> any ideas?

-- 
Matthew Harrison
Internet/Network Services Administrator
Peanut-Butter Cheesecake Hosting Services
Genstate
www.peanutbuttercheesecake.co.uk

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to