Rogue wrote:

Yes. The html is after the call to header(). I am very clear on header() now :)

That isn't the problem since the header() should be called way before any output... this is something bizarre here... The offending code is a block right smack in the middle of a bunch of other html stuff - which is totally similar and removing these lines of code fixes it. So strange. AND it is not just one of the rows or something - it is that block as a unit for some reason.





On Dec 10, 2003, at 11:53 PM, TheHeadSage wrote:

Is the HTML code before or after the header? As the header(); function
should be before any output is passed to the browser.

I advise you read about the header() function in the PHP manual.

----- Original Message -----
From: "rogue" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, December 11, 2003 2:34 PM
Subject: [PHP] Error that I can't find causing header() to fail


Hi all,

This template I have, has been driving me nuts. I am trying to debug
someone else's code and have narrowed the problem down to a few lines,
but I can't see what would be causing the problem.

Here is the scoop. When this template loads it is making:

header("Location: http://www.myurl.com";)

Fail. If I remove the following hunk of code, everything works as it
should on the template (redirecting me to the right place). Removing
any ONE row or combination does not seem to fix it, so there is
something to do with this whole block? I am at a loss here and could
really use another pair of eyes.

<snip>

   <tr>
<td nowrap align="right">
  <b>Fax:</b>
</td>
<td>
  <input name="fax" type="text" size="35" maxlength="20" value="<?php
echo $fax; ?>">
</td>
   </tr>
   <tr>
<td nowrap align="right">
  <b>Street:</b>
</td>
<td>
  <input name="street1" type="text" size="35" maxlength="100"
value="<?php echo $street1; ?>">
</td>
   </tr>
   <tr>
<td nowrap align="right">

</td>
<td>
  <input name="street2" type="text" size="35" maxlength="100"
value="<?php echo $street2; ?>">
</td>
   </tr>
   <tr>
<td nowrap align="right">
  <b>City:</b>
</td>
<td>
  <input name="city" type="text" maxlength="20"  value="<?php echo
$city; ?>"> State:
  <select name="state">
<?php
  mysql_select_db("main_db",$db) or die ("Unable to select database");
  $sql = "SELECT * FROM states WHERE display='yes' ORDER BY state";
  $result = mysql_query($sql,$db) or die ("Error in query: $sql".
mysql_error());
  while($stateNow = mysql_fetch_array($result)) {
$state_name = $stateNow[state];

print "<option value='$state_name'";
if ($state_name == $state) {
  print " SELECTED ";
}
elseif ($state_name == "NJ") {
  print " SELECTED ";
}
print ">$state_name</option>\n";
  }
?>
  </select>
</td>
   </tr>

</snip>

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



1) Look in any files you're including before the header() call and see if they have any whitespace after a closing php tag (?>).


2) Remove all ?> HTML HERE <?php syntax and replace with echo or print. I've seen using that syntax screw up headers before even if it's after the header() call.

3) Use output buffering up to the header call. Put ob_start() before the beginning of it all, then get to the header() point. If you don't need to use the header, use ob_end_flush() to flush the captured output. OR you can do ob_end_flush() at the very end of the script.

--
paperCrane <Justin Patrin>

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



Reply via email to