John,

It seems that you're using two different conventions here.  This is 
inconsistent, and confusing to me (at least, and possibly others trying 
to help you).  Let me show you what I am talking about:


On Wednesday, March 13, 2002, at 09:20  AM, John Gurley wrote:

> Sorry,
>     Didn't mean to keep everyone in the dark here is the code:

... snip ...

> <hr>
>
> <?
> echo $inp;
> ?>

Okay, see above?  You've used "$inp".  Now read on to another part of 
your code:

> <?php
> echo $inp;
> echo '<input name = "inp" type = "hidden" value = 
> "'.$_POST['$inp'].'">';
> ?>

Okay, now here, you're echoing "$inp" again, but then in the second echo 
statement you are echoing "$_POST['$inp']"

Please don't be insulted if I make an assumption about what you know 
about the use of variables within scripts, I'm going to do my best to 
explain this and I can't know how much you know or don't.  Here's how it 
works:

On a script, you have access to any variable that you create within that 
script.  Thus, if you create a variable named "$inp", you can then echo 
that variable or manipulate it in any way.  Like this:

$inp = "blue";   // this assigns the string "blue" to the $inp variable
echo $inp;   // this echoes "blue"
$outp = "green";  // this assigns "green" (a string) to the $outp 
variable
$outp . $inp;   // this combines ("concatenates") the two variables 
together
                 // and results in the string "greenblue"

Okay, you probably already know all of that.  But my point is that these 
variables are accessible to this particular script.  NOT TO OTHER 
SCRIPTS.  If you need a variable to be accessible to another script, you 
must "pass" the variable along.  There are a few ways to do this:

1) You can make the value of this variable a form field value, like this:
echo "<input type=\"hidden\" name=\"inp\" value=\"$inp\" />";
(or this way, with single quotes:)
echo '<input type="hidden" name="inp" value="' . $inp . '" />';
note that in the above example, I have jumped out of the string being 
echoed and concatenated the $inp variable to the string, then 
concatenated the last part of the string ('" />').  This is because 
within single-quotes, variables won't expand -- the buck ($) is treated 
as a literal buck, not a variable marker.

2) You can put the variable name and value into the querystring of a 
hyperlink, like this:
echo "<a href=\"./form2?inp=$inp\">Next</a>";
(or this way, with single quotes:)
echo '<a href="./form2?inp=' . $inp . '">Next</a>';
see how I've again jumped out of the singlequoted string and 
concatenated the variable?  Same reason -- variables don't expand within 
singlequoted strings (though they do within doublequoted strings).

3) You can put the variable's value into a session variable.  How you do 
this depends on which version of PHP you are using.  You can learn more 
about session variables later, it's easy but you should get the hidden 
form field technique or querystring technique down first.

These are ways you can pass variables to other scripts.  Ignore the 
session bit if you haven't yet learned sessions.

So in your example, you are echoing the value of $inp.  But I don't see 
where you've done the ASSIGNMENT of any value to $inp.  For this reason, 
you will simply get an empty string:

echo $inp;   // this results in nothing
echo "<input type=\"hidden\" name=\"inp\" value=\"$inp\" />;
       // this results in '<input type="hidden" name="inp" value="" />'

If you had passed the $inp variable from a previous script to this one, 
then you would use either $_GET['inp'] or $_POST['inp'] to access the 
variable, assuming you have register_globals turned off in your php.ini 
(if you don't then don't worry about this).

echo $_POST['inp']; // if the form from the previous script was 
'method="post"'
echo $_GET['inp'];  // if the form from the previous script was 
'method="get"'

But if you do this:

echo $_POST['$inp'];

Then nothing will happen because the $inp part is between single quotes, 
and single quotes don't expand variables -- the buck is treated as part 
of the variable name (when it's not, it's supposed to be an indicator).

Even this:

echo $_POST["$inp"];

probably won't do what you want, because what will happen is the 
variable $inp (inside of the brackets) will evaluate first, and then 
whatever that evaluates to will become the name within $_POST['   
and    '].  Unless you have defined "$inp" somewhere, that's just a 
mistake.  Don't use the $ symbol within $_POST or $_GET variables until 
you have a reason to do so.

So, in your script, you've called the "inp" variable both $inp and 
$_POST['$inp'].  You probably really only want to use one or the 
other -- use the first one if register_globals is turned on, and the 
second one if register_globals is turned off.  But remember, this trick 
is used only for accessing variables that have been passed to this 
script from another script, not for accessing variables that have been 
defined within this script.


This may have been overly explanatory and confusing, but if you have a 
question about it, ask us.




Erik


----

Erik Price
Web Developer Temp
Media Lab, H.H. Brown
[EMAIL PROTECTED]


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to