Problème d'affichage en php

sarita87 Messages postés 6 Statut Membre -  
 le père -
Bonjour,
ça fait un bon bout de temps que j'ai pas toucher au développement web et je trouve des difficultés sur l'affichage d'un msg après avoir récupérer les données saisies dans un formulaire voilà le code
<?php     

header ("location : test.php");   
require('connect_base.php');   


// récupération des données(l'existance des champs)   


if(isset($_POST['nom']))           {$nom=$_POST['nom'];}   

if(isset($_POST['prenom']))       {$prenom=$_POST['prenom'];}   

if(isset($_POST['mail']))     {$mail=$_POST['mail'];}   

if(isset($_POST['age']))     {$age=$_POST['age'];}   

if(isset($_POST['lieu']))          {$lieu=$_POST['lieu'];}   

if(isset($_POST['wilaya']))          {$wilaya=$_POST['wilaya'];}   

if(isset($_POST['ville']))      {$ville=$_POST['ville'];}   

if(isset($_POST['niveau']))      {$niveau=$_POST['niveau'];}   


if(isset($_POST['branche']))         {$branche=$_POST['branche'];}   

if(isset($_POST['sexe']))         {$sexe=$_POST['sexe'];}   

if(isset($_POST['specialite']))         {$specialite=$_POST['specialite'];}   



$sql1 = "INSERT INTO inscri (id,nom,prenom,mail,age,lieu,wilaya,ville,niveau,branche,sexe,specialite)VALUES('','$nom','$prenom', '$mail', '$age', '$lieu', '$wilaya', '$ville', '$niveau', '$branche', '$sexe', '$specialite')";    
mysql_query($sql1) or die('Erreur SQL !'.$sql1.'<br>'.mysql_error());   



echo'vos données sont enregistrer';   

mysql_close();   


 ?>


en cliquant sur le bouton envoyer les données s'enregistrent sur BDD mais au lieu de voir le msg vos données sont enregistrer je trouve impossible d'afficher la page
si je ferme pas la connexion j'enlève le mysql_close() tout se passe normalement.
et je peux pas laisser la connexion ouverte
j'espère que je me suis bien exprimer.
en attente d'une aide.
A voir également:

5 réponses

le père
 
Bonjour

Ce qui est bizarre, c'est que tu arrives à voir le message 'vos données sont enregistrer' en enlevant le mysql_close();

En effet, tu as un header ("location : test.php"); au début de ton script, ça devrait t'envoyer vers la page test.php dès que tu essayes d'afficher quelque chose, qu'il y ait ou non un mysql_close().

Il faut que tu choisisses si tu veux faire une redirection ou un echo, mais faire les deux n'est pas logique.

D'ailleurs, on ne met généralement pas d'espace entre 'location' et ':'. J'avoue que je ne sais pas si c'est vraiment interdit.
1
sarita87 Messages postés 6 Statut Membre
 
Je commence par vous remerciez d'avoir pris la peine de répondre c'est gentil .
Pour le header il renvoie vers la même la page si je le mets ou je l'enlève c'est pareil d'ailleurs je l'ai enlevé ça na rien changé le problème est le même si j'enlève le mysql_close(); il affiche le msg si non ya impossible d'afficher la page mais les données sont enregistrées quand même peut être y'a un truc qui manque dans mon code j'arrive pas à le voir
0
Alain_42 Messages postés 5413 Statut Membre 894
 
essayes comme ça:

<?php   
require('connect_base.php');   
// récupération des données(l'existance des champs)   
//mysql_real_escape_string(...) pour sécuriser les données reçues avant insertion dans la BDD

if(isset($_POST['nom']))           {$nom=mysql_real_escape_string($_POST['nom']);}   

if(isset($_POST['prenom']))       {$prenom=mysql_real_escape_string($_POST['prenom']);}   

if(isset($_POST['mail']))     {$mail=mysql_real_escape_string($_POST['mail']);}   

if(isset($_POST['age']))     {$age=mysql_real_escape_string($_POST['age']);}   

if(isset($_POST['lieu']))          {$lieu=mysql_real_escape_string($_POST['lieu']);}   

if(isset($_POST['wilaya']))          {$wilaya=mysql_real_escape_string($_POST['wilaya']);}   

if(isset($_POST['ville']))      {$ville=mysql_real_escape_string($_POST['ville']);}   

if(isset($_POST['niveau']))      {$niveau=mysql_real_escape_string($_POST['niveau']);}   

if(isset($_POST['branche']))         {$branche=mysql_real_escape_string($_POST['branche']);}   

if(isset($_POST['sexe']))         {$sexe=mysql_real_escape_string($_POST['sexe']);}   

if(isset($_POST['specialite']))         {$specialite=mysql_real_escape_string($_POST['specialite']));}   

$sql1 = "INSERT INTO inscri (id,nom,prenom,mail,age,lieu,wilaya,ville,niveau,branche,sexe,specialite)VALUES('','$nom','$prenom', '$mail', '$age', '$lieu', '$wilaya', '$ville', '$niveau', '$branche', '$sexe', '$specialite')";    
$req=mysql_query($sql1) or die('Erreur SQL !'.$sql1.'<br>'.mysql_error());   


if($req){
	//si la requette s'est bien passée
	echo 'vos données sont enregistrées';   
}else{
	echo 'PB , enregistrement non effectué !';
}
mysql_close(); 
0
le père
 
Bonjour

Tout à fait d'accord pour le mysql_real_escape_string, même si avec ses données ça ne change rien au problème de sarita87 (il y aurait un message d'erreur SQL)
Par contre, si la requête échoue, le die est exécuté et le if ($req) qui suit est donc dans tous les cas totalement inutile : il n'est exécuté que si $req est true.
0
le père
 
Je ne comprends pas pourquoi le mysql_close y change quelque chose. De toutes manières, php referme systématiquement les connexions (non persistantes) à mySQL en fin de script, tu n'es pas obligé de le faire toi-même.
0
bissdebrazza Messages postés 2886 Statut Contributeur 712
 
Je pense que cela doit venir de la version de PHP ou APACHE. car il fût un moment où une version de wamp buguait avec le msql_close(). Un petit exemple de conversation.
Donc s'il n'a pas mis à jour sa version de PHP, il se peut que mysql_close() lui pose des problèmes.
0
le père
 
En voilà une remarque intéressante...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5413 Statut Membre 894
 
tout a fait d'accord avec toi le père, mais en "exploitation normale" lorsque le script a été débuggé, perso je supprime les or die, donc le if($req) sert a informer l'internaute de la bonne exécution ou pas de l'enregistrement
0
le père
 
C'est vrai que ce serait une bonne habitude de supprimer les "or die", j'avoue que je ne l'ai pas
0