[RESOLU] problème d'enregistrement d'un seul champs d'un formulaire

Eléphant du PHP | 57 Messages

14 août 2012, 13:17

Bonjour à tous :D

Je me prend la tête depuis un petit moment avec mon formulaire d'inscription. et j'apprécierais beaucoup un petit coup de pouce ! merci d'avance :mrgreen:

ma situation :
j'ai fait un formulaire pour l'inscription des visiteurs -> membres. Ce formulaire comprends, pour l'instant, 3 champs : pseudo, mdp (<=> password) et passions.
J'ai fait une page qui traite les données envoyées par ce formulaire et qui entre ces données dans ma table "membres".

le souci :
quand un visiteur remplit tous les champs (donc les 3 champs), les données des champs 'pseudo' et 'mdp' sont enregistrées dans la table mais pas celles du champs 'passions' qui restent désespérément avec la valeur 0.

Je vous met mes codes :
Celui de mon formulaire
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>formulaire_inscription</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
<link rel="stylesheet" href="../tech/style1.css" />
</head>
<body>
<?php include("../pages/entete.php"); ?>
<?php include("../pages/cadre_gauche.php"); ?>
<?php include("../pages/cadre_droite.php"); ?>
<?php include("../pages/menu_top.php"); ?>
<div id="corps">
<h1>INSCRIPTION</h1>

<p>
<form method="post" action="formulaire_inscription_traitement.php">
	<p>
	<label for="pseudo">Votre pseudo</label> : <input type="text" name="pseudo" id="pseudo" />
		<br />
	<label for="mdp">Votre mot de passe :</label> <input type="password" name="mdp" id="mdp" />
		<br />
	<label for="passions">Vos passions</label> : <input type="text" name="passions" id="passions" />
		<br />
	<input type="submit" value="Envoyer" />
</p>

</form>
</p>
</div>
<?php include("../pages/pdp.php"); ?>
</body>
</html>  
Celui de ma page de traitement :
<?php 
// On commence par récupérer les champs 
if(isset($_POST['pseudo']))      $pseudo=$_POST['pseudo'];
else      $pseudo="";

if(isset($_POST['mdp']))      $mdp=$_POST['mdp'];
else      $mdp="";

if(isset($_POST['passions']))      $passions=$_POST['passions'];
else      $passions="";

// On vérifie si les champs pseudo et mdp sont vides 
if(empty($pseudo) OR empty($mdp)) 
    { 
    echo '<font color="red">Attention, tous les champs avec une asterisque doivent être remplis!<br /><a href="../tech/formulaire_inscription.php">Réessayez !</a></font>'; 
	exit;
    } 
// Aucun champ n'est vide, on peut enregistrer dans la table 
else      
    { 
       // connexion à la base
$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());

// sélection de la base  

    mysql_select_db('gv2',$db)  or die('Erreur de selection '.mysql_error()); 
	
 // on regarde si le pseudo existe déjà 
    $sql = "SELECT id FROM membres WHERE pseudo='$pseudo'"; 
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());  
     
    // on compte le nombre de résultats 
    $res = mysql_num_rows($req); 

    if($res!=0)  // le pseudo existe déjà, on affiche un message d'erreur 
        { 
        echo '<font color="red">Désolé, mais ce pseudo existe déjà dans notre base.<br /><a href="../tech/formulaire_inscription.php">Réessayez !</a></font>'; 
		exit;
        } 
    else  // le pseudo n'existe pas, on insère les informations du formulaire dans la table 
	
    // on écrit la requête sql 
    $sql = "INSERT INTO membres(id, pseudo, mdp, passions) VALUES('','$pseudo','$mdp', '$passions')"; 
     
    // on insère les informations du formulaire dans la table 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 

    // on affiche le résultat pour le visiteur    
    echo 'Vos infos on été ajoutées.'; 

    }  
?>
<p><a href="../pages/accueil.php">retour à la page d'accueil</a></p>
Quand je fais une inscription, il n y'a aucun message d'erreur. sauf que quand je vérifie dans ma base de données, le champs 'passions' contient '0' même si j'ai tapé quelque chose dans la case 'passions' du formulaire. J'y comprends rien !

Merci d'avance à tous celles/ceux qui prendront la peine de me répondre et bonne jouréne !

ViPHP
xTG
ViPHP | 7331 Messages

14 août 2012, 13:55

Quel est le type de ce champ de ta bdd ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 août 2012, 13:57

salut,

comment est faites ta table membres ? (montre nous le create table de la table).

Pour debugguer affiche la requête avant de l’exécuter pour voir ce que tu envois au serveur MySQL.

tu peux aussi la fonction var_dump() pour t'aider à bien cerner le problème (par exemple un var_dump($_POST) peux t'aider.

si tu trouve l'affichage du var_dump peux lisible ajoute un <pre></pre> autour ;)



@+
Il en faut peu pour être heureux ......

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 août 2012, 13:57

salut,

comment est faites ta table membres ? (montre nous le create table de la table).

Pour debugguer affiche la requête avant de l’exécuter pour voir ce que tu envois au serveur MySQL.

tu peux aussi la fonction var_dump() pour t'aider à bien cerner le problème (par exemple un var_dump($_POST) peux t'aider.

si tu trouve l'affichage du var_dump peux lisible ajoute un <pre></pre> autour ;)

edit : trop lent :s
je vois que l'on a la même idée avec xTG ;)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 57 Messages

14 août 2012, 14:11

Merci beaucoup pour votre aide =D>

bon j'avoue que j'ai pas tout compris de ce que vous mavez dit :oops: mais comme vous m'avez parlé de la structure de ma base, je suis allée y refaire un tour et..; j'ai trouvé l'erreur !!! c'etait donc bien une erreur stupide de ma part sauf que c'etait pas de le code mais bien dans la structure de ma base (le type du champs 'passions' était enregistré comme INt, ça risquait pas de marcher #-o ). je l'ai changer en TEXT et ça marche nikel !!!

en tout cas merci pour la peine que vous vous êtes donner en me répondant. vous êtes adorables =D>