On Wed, Jan 13, 2010 at 11:39:18AM -0800, Richard S. Crawford wrote:

> Here is a snippet of code that is going to be the death of me:
> 
> ------------------------------------------------------------
> //  Create a new project
> $projectcode = strtoupper(addslashes($_POST['projectcode']));   //  project
> code
> 
> //  Make sure the project code is unique
> if (!$existingproject = mysql_query("select * from pb_versions where
> projectcode like '".strtoupper($projectcode)."'")) {
>     die ("Could not check for existing project code!<br />".mysql_error());
> }
> 
> $numprojects = mysql_num_rows($existingproject);
> 
> if ($numprojects > 0) {
>     $pid = mysql_result($existingproject,0,"versionID");
>     header("Location:managebudget.php?e=1&pid=$pid");
> }
> ------------------------------------------------------------
> 
> Now, even if $numprojects is 1, 2, 3, etc., the header() command is not
> executed. Strangely, a header("Location") command later on in the script
> *is* executed. I've output the value of $numprojects, so I know that it's
> greater than 0, so the command
> header("Location:managebudget.php?e=1&pid=$pid"); *should* be executed...
> but it isn't. (Weirdly, if I put a die() command *after* this header()
> command, it works... but it seems pathologically inelegant to do so.)
> 
> Obviously, I'm missing something incredibly basic. Can anyone help me figure
> this out?

For one thing, I'd put a space after "Location:" in the header() call.
But I've found that this call will sometimes fail (or *look* like it
fails) unless you put something like exit(); after it. This terminates
execution and forces the script to transfer control as it should. Just
make it a habit to always include and exit(); call after your final
header() call.

Paul

-- 
Paul M. Foster

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

Reply via email to