Problème avec Header...

Problème avec Header... - PHP - Programmation

Marsh Posté le 13-08-2003 à 10:34:25    

Bonjour,  
 
J'ai un problème avec le développement d'une base de données mysql en PHP.  
J'aimerais insérer des données dans une base "membre" à l'aide d'un formulaire. Jusqu'ici pas de problème. Comme je débute, je m'appuie sur un exemple récupéré sur le web. Mais en changeant les champs de la base, l'insertion d'un nouveau membre ne fonctionne plus. Le message suivant apparait :  
 
" Warning: Cannot add header information - headers already sent by (output started at c:\program files\easyphp\www\projet1\gkdpro\protec\adduser.php3:2) in c:\program files\easyphp\www\projet1\gkdpro\protec\adduser.php3 on line 61".  
 
La ligne 61 correspond à ceci :  
 
"header("Location:creation_compte.php3?id=$id&pseudo=$new_pseudo" )";  
 
Je ne sais plus du tout comment faire. Quelqu'un pourait-il m'eclairer un peu sur ce message d'erreur???
 
 
Voici le code complet :  
 
<?
require("passe/conf.php3" );
// CONNEXION MYSQL
$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
// SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS
$requete=mysql_db_query($sql_bdd,"select * from membre where id=\"$id\"",$db_link);
 $admin=mysql_result($requete,$i,"passe" );
// SI L'ID N'EXISTE PAS
if(mysql_num_rows($requete)==0)
 {
 // REDIRECTION PAGE ERREUR
 header("Location:$url_erreur" );
 }  
if($admin!=$motdepasse)
 {
 // REDIRECTION PAGE ERREUR
 header("Location:$url_erreur" );
 }
 
switch($action) {
/*-----------------------------------------------------------------*/
/* AJOUT DANS MySQL   */
/*-----------------------------------------------------------------*/
 
case "add";
 
// CONNEXION A LA BASE DE DONNEE
// TEST SUR LES VALEURS SAISIES
if($new_pseudo=="" ){echo "<center>Vous devez saisir un pseudo</center>";exit;}
if($new_password=="" ){echo "<center>Vous devez saisir un mot de passe</center>";exit;}
 
// ON VERIFIE SI CE PSEUDO EXISTE DEJA
$requete=mysql_db_query($sql_bdd,"select * from membre where pseudo=\"$new_pseudo\"",$db_link);
$num=mysql_num_rows($requete);
if($num!=0)
 {
 echo "<center>Ce pseudo existe déjà, Il faut en choisir un autre</center>";
 }
else
 {
 // CREATION D'UN IDENTIFIANT ALEATOIRE
 $taille = 20;
 $lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
 srand(time());
 for ($i=0;$i<$taille;$i++)
  {
  $id2.=substr($lettres,(rand()%(strlen($lettres))),1);
  }
  // ON RECHERCHE L'ID MAXIMUM DE LA TABLE
 $requete=mysql_db_query($sql_bdd,"select max(id_membre) from membre",$db_link);
 $idmax=mysql_result($requete,0,"max(id_membre)" );
 
 
 
 // INSERTION DANS LA TABLE  
 $idnew=$idmax+1;
 $requete=mysql_db_query($sql_bdd,"insert into membre values ($idnew,\"$id2\",\"$new_pseudo\",\"$new_password\",\"$titre1\",\"$nom1\",\"$prenom1\",\"$societe1\",\"$email1\",\"$destination1\" )",$db_link);
 
 // REDIRECTION VERS LA PAGE D'ENTREE DE L'ESPACE MEMBRE
 header("Location:creation_compte.php3?id=$id&pseudo=$new_pseudo" );
 
 }

// DECONNEXION MYSQL
mysql_close($db_link);
 
break;
 
default;
echo " <font face=\"Verdana, Arial\" size=\"5\"><center>
 <font size=\"2\">
 <form action=\"adduser.php3?id=".$id."\" method=\"post\">
 Chosissez un pseudo<br>
 <input type=\"text\" name=\"new_pseudo\"><br>
 Chosissez un mot de passe<br>
 <input type=\"password\" name=\"new_password\"><br>
 Titre<br>
 <select name=\"titre1\">
                      <option value=\"Mademoiselle\">Mademoiselle</option>
                      <option value=\"Madame\">Madame</option>
                      <option value=\"Monsieur\">Monsieur</option>
                    </select><br>
 Nom<br>
 <input type=\"text\" name=\"nom1\"><br>
 Prenom<br>
 <input type=\"text\" name=\"prenom1\"><br>
 Société<br>
 <input type=\"text\" name=\"societe1\"><br>
 Email<br>
 <input type=\"text\" name=\"email1\"><br>
 
 Qualité<br>
 <select name=\"destination1\">
                      <option value=\"interne.php\">Agent Team France</option>
                      <option value=\"GKD Duren\">Agent GKD Duren</option>
                      <option value=\"Client\">Client</option>
                    </select><br><br>
 
   
 <input type=\"hidden\" name=\"action\" value=\"add\">
 <input type=\"submit\" value=\"Envoyer\">
 </form></font>
 </center></font>";
 
include ("footer.php3" );
break;
}
?>
           

Reply

Marsh Posté le 13-08-2003 à 10:34:25   

Reply

Marsh Posté le 13-08-2003 à 10:37:42    

rahhh mais merde !!! cette question est posée une fois par jour ici, fais une recherche sur php et header  
 
on ne peut pas modifier un entête HTTP avec la fonction header() si  quelque chose (du code HTML, un espace n'importe quoi) a été envoyé sur la sortie standard (le navigateur)
 
la fonction header doit donc être placé avant tout affichage  
 
désolé de m'être emporté je reprends maintenant mon calme
 
EDIT : dans ton cas l'affichage s'est produit dans le script adduser à la ligne 2
RE-EDIT : la ligne 2 pas 32


Message édité par Sh@rdar le 13-08-2003 à 11:01:10

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 13-08-2003 à 10:54:43    

Je ne comprends pas tres bien ce que tu appelles "affichage" et pourquoi, dans l'exemple sur lequel je me base, il n'y a pas de problème alors que le code est identique (excepté pour les valeurs à inserer dans la table.  
Je n'ai rien trouvé qui puisse m'aider en recherchant sur le forum.

Reply

Marsh Posté le 13-08-2003 à 11:02:34    

vérifie que tu n'as pas d'espace (considéré comme une sortie) avant <? et ceci pour tous les fichiers inclus avant l'appel à header()
 


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 13-08-2003 à 11:08:19    

Merci!!!!!
 
Effectivement, il y avait bien un espace avant <?.
Ca fonctionne tres bien maintenant!
Encore merci Sh@rdar...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed