Fonction header

StarT
Invité n'ayant pas de compte PHPfrance

23 août 2005, 17:25

Salut, je viens d'écrire ce code pour la reccuperation des donneées à partir d'une base de données mais une erreur s'affiche à chaque fois que l'enregistrement n'existe pas même si dans ce cas je demande à mon code de me rediriger vers une certaine page ! ( problème dans la fonction header )

voila mon code
<? require_once("connexion.php") ?>
<?
$N=$_POST['nom'];
$P=$_POST['prenom'];

$vsql="SELECT * FROM `commande` WHERE `Nom` = '".$N."' and `Prenom` = '".$P."'"; 

$rs=mysql_query($vsql) or die (mysql_error());
if(!($rs_row=mysql_fetch_assoc($rs))){
header("location:BonComForm.php"); // ligne de l'erreur
}
else {
?>
//mon traitement 

<? }
mysql_free_result($rs);
?>
Voilà le msg d'erreur
Warning: Cannot modify header information - headers already sent by (output started at c:\www\dsitest\boncomform.php:6) in c:\www\dsitest\boncomform.php on line 149
Pouvez vous m'aider ?! :(

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

23 août 2005, 17:32

vérifie qu'aucun texte n'est affiché avant : même un espace en dehors des balises pHP

Invité
Invité n'ayant pas de compte PHPfrance

23 août 2005, 17:43

Non pas de texte affiché, sauf pour mon menu ! :roll:

Eléphant du PHP | 50 Messages

23 août 2005, 17:44

ne serait-ce qu'un espace...

Eléphant du PHP | 55 Messages

23 août 2005, 17:45

Tu n'as pas des espaces en trop avant et après les <? et ?>?

Invité
Invité n'ayant pas de compte PHPfrance

23 août 2005, 18:10

Voilà mon code textuellement ! :cry:
<?
$N=$_POST['nom'];
$P=$_POST['prenom'];
$vsql="SELECT * FROM `commande` WHERE `Nom` = '".$N."' and `Prenom` = '".$P."'"; 
$rs=mysql_query($vsql) or die (mysql_error());
if(!($rs_row=mysql_fetch_assoc($rs))){
header("location:administrateur_ok.php");
}
else {
?>

Mammouth du PHP | 19672 Messages

23 août 2005, 18:12

Est-ce que par hasard ce bout de code ne serait pas inclus dans un autre fichier qui lui a déjà envoyé des informations au navigateur ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

23 août 2005, 18:15

Non pas du tout :roll:

Mammouth du PHP | 19672 Messages

23 août 2005, 18:19

Je vois pas trop. Un espace avant le <? est largement suffisant pour générer cette erreur, s'il n'y en a pas, je ne vois pas d'où ça peut venir :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1885 Messages

23 août 2005, 18:42

Bonjour,

J'adore le "or die()" qui peut renvoyer un message d'erreur (donc du texte) avant le header().
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Mammouth du PHP | 19672 Messages

23 août 2005, 18:47

Bien vu Ripat, je l'ai loupée celle-là :oops:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1885 Messages

23 août 2005, 18:55

Bonjour,
Bien vu Ripat, je l'ai loupée celle-là :oops:
Qui est ripat?
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Mammouth du PHP | 19672 Messages

23 août 2005, 18:56

Arf, faut que je change mes lunettes, ça urge, désolé PHP
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 1380 Messages

23 août 2005, 19:34

Bonjour,
Bien vu Ripat, je l'ai loupée celle-là :oops:
Qui est ripat?
C'est moi.

die() est un alias de exit. S'il y avait une erreur retournée par le serveur MySQL, le script s'arrêterait avant même d'arriver au header(...)

Il y a donc forcément une sortie avant. Et si StarT nous disait ce que contient la ligne
output started at c:\www\dsitest\boncomform.php:6
ripat

Mammouth du PHP | 1885 Messages

23 août 2005, 19:38

Bonjour,
S'il y avait une erreur retournée par le serveur MySQL, le script s'arrêterait avant même d'arriver au header(...)

Il y a donc forcément une sortie avant. Et si StarT nous disait ce que contient la ligne
output started at c:\www\dsitest\boncomform.php:6
Bien vu, le script présenté plus haut ne semble pas représenté entièrement celui-ci. La ligne 6 correspondrait à la déclaration de variable pour la requête.

Je soupconne alors qu'il y a d'autre ligne avant le code montré. De plus, je conseille fortement de supprimer la fermeture et l'ouverture consécutive de ?> et <? qui se trouvent dans les premières lignes.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP