For Programmers: Free Programming Magazines  


Home > Archive > PHP Language > January 2006 > Variable scope problem?









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Variable scope problem?
J

2006-01-19, 6:58 pm

I have a page search.php which uses Top.php and Bottom.php to do most
webpage stuff common to all pages. Top.php includes/requires
KTConstants.php.
Top.php can't see Constants/variables like $favoriateColor='234566'; defined
in KTConstants.php
I tried include instead of require.
I tried using $GLOBALS['KTPTBlue']; perhaps I didn't do it right.
The global keyword gives me an error...expected = or something.


****************TOP.PHP
<?
require_once("KTConstants.php");
require_once("PatientResults.php");
require_once("BuildForm.php");
require_once("Bottom.php");

function Top($redorblue)
{
//if ( $redorblue == 'red')
$KTPTTopColor=$KTPTRed;
else
$KTPTTopColor=$KTPTBlue;

echo $KTPTBlue; //Doesn't work
echo $KTPTTopColor; //Doesn't work

echo '<html><head><title>Search Page</title></head><body>';

echo "<table bgcolor='$KTPTTopColor' width = 800>";
echo '<tr><td>';
echo '<a href=search.php>Find</a>';
echo '<a href=add.php>Add</a>';
echo '</td></tr>';

}
?>


***************KTConstants.php
<?
$KTPTRed = 'FF9999';
$GLOBALS['KTPTBlue'] = '6666FF'; //tried both
$KTPTServer='';
$KTPTDatabase='';
$KTPT='';
?>


The problem is that the above
echo bgcolor='$KTPTTopColor'
always comes out blank on view source.

Even when I insert into top.php.
echo $KTPTBlue; nothing happens.
Although it works when I echo it in KTConstants.php.

Thanks in advance,
-JB


Colin McKinnon

2006-01-19, 6:58 pm

"J" <notanymore> wrote:

> I tried using $GLOBALS['KTPTBlue']; perhaps I didn't do it right.
> The global keyword gives me an error...expected = or something.
>


guess so I would have expected it to.

>
> ****************TOP.PHP
> <?
> require_once("KTConstants.php");
> require_once("PatientResults.php");
> require_once("BuildForm.php");
> require_once("Bottom.php");
>


required/included files are added in the global scope

> function Top($redorblue)
> {
> //if ( $redorblue == 'red')


I guess you don't really mean to comment this line only - cos that would be
a syntax error

> $KTPTTopColor=$KTPTRed;
> else
> $KTPTTopColor=$KTPTBlue;
>


These variables are all out of scope.
Should be:
$KTPTTopColor=$_GLOBALS['KTPTRed'];

> echo $KTPTBlue; //Doesn't work
> echo $KTPTTopColor; //Doesn't work
>


Yes - its out of scope.

C.
J

2006-01-23, 9:55 pm

Thanks for the tips.

I was told to "global"ize my vars I use in functions at the beginning of the
function just after the first '{'

you know, as stated plainly in the manual?

RTFM rings true again - but I won't learn. ;)

-JB


Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com