Problème d'affichage en php

Fermé
sarita87 Messages postés 3 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 18 octobre 2011 - Modifié par sarita87 le 18/10/2011 à 18:45
 le père - 19 oct. 2011 à 13:58
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

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 3 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 18 octobre 2011
18 oct. 2011 à 18:49
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
18 oct. 2011 à 21:16
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
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
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 2065 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
19 oct. 2011 à 11:20
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
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
19 oct. 2011 à 13:42
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
C'est vrai que ce serait une bonne habitude de supprimer les "or die", j'avoue que je ne l'ai pas
0