Page 1 sur 4
Fonction header
Posté : 23 août 2005, 17:25
par StarT
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 ?!

Posté : 23 août 2005, 17:32
par ouckileou
vérifie qu'aucun texte n'est affiché avant : même un espace en dehors des balises pHP
Posté : 23 août 2005, 17:43
par Invité
Non pas de texte affiché, sauf pour mon menu !

Posté : 23 août 2005, 17:44
par tibougnat
ne serait-ce qu'un espace...
Posté : 23 août 2005, 17:45
par Bobulum
Tu n'as pas des espaces en trop avant et après les <? et ?>?
Posté : 23 août 2005, 18:10
par Invité
Voilà mon code textuellement !
<?
$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 {
?>
Posté : 23 août 2005, 18:12
par Cyrano
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 ?
Posté : 23 août 2005, 18:15
par Invité
Non pas du tout

Posté : 23 août 2005, 18:19
par Cyrano
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

Posté : 23 août 2005, 18:42
par Xenon_54
Bonjour,
J'adore le "or die()" qui peut renvoyer un message d'erreur (donc du texte) avant le header().
Posté : 23 août 2005, 18:47
par Cyrano
Bien vu
Ripat, je l'ai loupée celle-là

Posté : 23 août 2005, 18:55
par Xenon_54
Bonjour,
Bien vu
Ripat, je l'ai loupée celle-là

Qui est ripat?
Posté : 23 août 2005, 18:56
par Cyrano
Arf, faut que je change mes lunettes, ça urge, désolé PHP
Posté : 23 août 2005, 19:34
par Ripat
Bonjour,
Bien vu
Ripat, je l'ai loupée celle-là

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
Posté : 23 août 2005, 19:38
par Xenon_54
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.