Problème formulaire ajout type:radio
Résolu
flo39400
Messages postés
596
Date d'inscription
Statut
Membre
Dernière intervention
-
flo39400 Messages postés 596 Date d'inscription Statut Membre Dernière intervention -
flo39400 Messages postés 596 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici mon code modifier:
J'ai voulu ajouter quelque chose a l'inscription pour que les utilisateurs indique de quel sexe ils sont, donc dans la table "membre" il y a:
_id
_login
_pass_md5
_email
_date_naissance
_sexe (en char(1) )
Donc j'ai mis en char 1 car la valeur qui doit être inscrit est sois un "F" ou un "M", mais voila vu que je mis connais pas beaucoup j'ai une erreur de ce genre:
Erreur SQL !INSERT INTO membre VALUES("", "Wargame", "4c5e99a2460c3513e3b754de8efe2155", "wargame@gmail.com", "")
Column count doesn't match value count at row 1
j'ai tester de m'inscrire avec le pseudo "Wargame" et l'adresse mail: "wargame@gmail.com"
Donc d'après ce que je vois il manque une valeur car il y a pas afficher le sexe :/
Si vous pouvez m'aider a y voir plus claire merci d'avance a vous.
Voici mon code modifier:
<?php // on teste si le visiteur a soumis le formulaire if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { // on teste l'existence de nos variables. On teste également si elles ne sont pas vides if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { // on teste les deux mots de passe if ($_POST['pass'] != $_POST['pass_confirm']) { $erreur = 'Les 2 mots de passe sont différents.'; } else { $base = mysql_connect ('192.168.1.22', '', ''); mysql_select_db ('test', $base); // on recherche si ce login est d a utilisé par un autre membre $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); if ($data[0] == 0) { $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'", "'.mysql_escape_string($_POST['email']).'", "'.mysql_escape_string($_POST['sexe']).'")'; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); session_start(); $_SESSION['login'] = $_POST['login']; header('Location: membre.php'); exit(); } else { $erreur = 'Un membre posséde déja ce login.'; } } } else { $erreur = 'Au moins un des champs est vide.'; } } ?> <html> <head> <title>Inscription</title> <link rel="stylesheet" media="screen" type="text/css" title="design.css" href="design" /> </head> <body> <div id="inscription"> <div class="inscription"> <a href="[http://dieutopgun.synology.me]">Accueil</a><br /> Inscription à l'espace membre :<br /><br /> <form class="Inscription" action="inscription.php" method="post"> Login :<br /> <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br /> <br />E-Mail :<br /> <input type="email" name="email" value="<? if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>"><br /> <br />Mot de passe :<br /> <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br /> <br />Confirmation du mot de passe : <br /><input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br /> <br />Votre sexe :<br /> <br /><label for="M">Masculin</label><input type="radio" id="M" name="sexe" value="<?php if (isset($_POST['sexe'])) echo htmlentities(trim($_POST['sexe'])); ?>" /> <label for="F">Féminin</label><input type="radio" id="F" name="sexe" value="<?php if (isset($_POST['sexe'])) echo htmlentities(trim($_POST['sexe'])); ?>" /> <br /> <br /><input type="submit" name="inscription" value="Inscription"> </form> </div> </div> <?php if (isset($erreur)) echo '<br />',$erreur; ?> </body> </html>
J'ai voulu ajouter quelque chose a l'inscription pour que les utilisateurs indique de quel sexe ils sont, donc dans la table "membre" il y a:
_id
_login
_pass_md5
_email
_date_naissance
_sexe (en char(1) )
Donc j'ai mis en char 1 car la valeur qui doit être inscrit est sois un "F" ou un "M", mais voila vu que je mis connais pas beaucoup j'ai une erreur de ce genre:
Erreur SQL !INSERT INTO membre VALUES("", "Wargame", "4c5e99a2460c3513e3b754de8efe2155", "wargame@gmail.com", "")
Column count doesn't match value count at row 1
j'ai tester de m'inscrire avec le pseudo "Wargame" et l'adresse mail: "wargame@gmail.com"
Donc d'après ce que je vois il manque une valeur car il y a pas afficher le sexe :/
Si vous pouvez m'aider a y voir plus claire merci d'avance a vous.
A voir également:
- Problème formulaire ajout type:radio
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Ajout snap sans rien d'écrit - Forum Snapchat
- Clear type - Guide
5 réponses
Bonjour,
C'est le problème .. lorsqu'on utilise la syntaxe INSERT comme tu le fais ....
Il est préférable de SPECIFIER sur quels champs on insères les données....
Ce qui, pour ton cas, deviendrait :
Et si tu veux y inclure le sexe :
C'est le problème .. lorsqu'on utilise la syntaxe INSERT comme tu le fais ....
Il est préférable de SPECIFIER sur quels champs on insères les données....
Ce qui, pour ton cas, deviendrait :
INSERT INTO membre (_login,_pass_md5,_email,_date_naissance) VALUES ( "Wargame", "4c5e99a2460c3513e3b754de8efe2155", "wargame@gmail.com", "")
Et si tu veux y inclure le sexe :
INSERT INTO membre (_login,_pass_md5,_email,_date_naissance,_sexe) VALUES ( "Wargame", "4c5e99a2460c3513e3b754de8efe2155", "wargame@gmail.com", "","M")
Bonjour
il n'y a pas de value définie pour sexe dans ton input
"<?php if (isset($_POST['sexe'])) echo htmlentities(trim($_POST['sexe'])); ?>
pense que c'est un radio et pas un texte a saisir ou rien ne s'affiche si pas encore posté
mets les valeurs en html
value="F"
value="M"
et teste dans la vérification avant connexion BDD que $_POST['sexe'] existe et est empty
il n'y a pas de value définie pour sexe dans ton input
"<?php if (isset($_POST['sexe'])) echo htmlentities(trim($_POST['sexe'])); ?>
pense que c'est un radio et pas un texte a saisir ou rien ne s'affiche si pas encore posté
mets les valeurs en html
value="F"
value="M"
et teste dans la vérification avant connexion BDD que $_POST['sexe'] existe et est empty
déjà fais ce qu'a dit jordane
puis dans ton form
dans ta verification modifie apres " // on teste l'existence de nos variables. On teste également si elles ne sont pas vides"
puis dans ton form
<label for="M">Masculin</label><input type="radio" id="M" name="sexe" value="M" /> <label for="F">Féminin</label><input type="radio" id="F" name="sexe" value="F" />
dans ta verification modifie apres " // on teste l'existence de nos variables. On teste également si elles ne sont pas vides"
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['sexe']) && !empty($_POST['sexe'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { // on teste les deux mots de passe .....
l'erreur que tu as faite
la value du bouton radio est vide car
1) la value de sexe c'est echo htmlentities(trim($_POST['sexe']))
2) le post n'est pas encore fait à la saisie du formulaire
3) echo htmlentities(trim($_POST['sexe'])) n'affiche donc rien !
4) la value de sexe est donc vide
5) ce qui est posté pour sexe est vide
6) tu ne verifie pas si sexe existe ou est vide donc l'insert dans la bdd se fait
6) la colonne "sexe" de ta BDD ne se rempli pas d'ou erreur sql
la value du bouton radio est vide car
1) la value de sexe c'est echo htmlentities(trim($_POST['sexe']))
2) le post n'est pas encore fait à la saisie du formulaire
3) echo htmlentities(trim($_POST['sexe'])) n'affiche donc rien !
4) la value de sexe est donc vide
5) ce qui est posté pour sexe est vide
6) tu ne verifie pas si sexe existe ou est vide donc l'insert dans la bdd se fait
6) la colonne "sexe" de ta BDD ne se rempli pas d'ou erreur sql
Il faut donc apprendre un peu ex sur openclassroom il y a plein des cours très complets et gratuits. Le truc ce n'est peu être pas de coder à 300 caractères/minute sans coquilles, mais au moins comprendre un code pour bidouiller dedans.
Bas j'y suis arrivé mais ce truc de radio pour y insérer dans une base de donnée je trouve rien la dessus sinon enregistré des champs écris normal sa vas.
Mais le reste sais chaud pour moi donc je vais abandonnée vu que voila je ne peu avoir d'aide la dessus.
Mais le reste sais chaud pour moi donc je vais abandonnée vu que voila je ne peu avoir d'aide la dessus.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bas j'y suis arrivé mais ce truc de radio pour y insérer dans une base de donnée je trouve rien la dessus sinon enregistré des champs écris normal sa vas.
Mais le reste sais chaud pour moi donc je vais abandonnée vu que voila je ne peu avoir d'aide la dessus.
... la manipulation des radio button.. se fait de la même manière que pour les autres types de champs....
Il suffit de récupérer la valeur dans la variable $_POST
Pour comprendre ... il te suffit d'ajouter
print_r($_POST);au début de ta page...puis de regarder ce que ça t'affiche...
Ensuite... pour ce qui est de leur affecter une valeur... ce n'est pas pareil que les input ...là .. tu ne touches pas au VALUE.....
tu utilises l'attribut checked.
Voila à quoi devrait ressembler le code de tes radio.
<php $sexe = isset($_POST['sexe'])?$_POST['sexe']:"M"; ?> <br /> <label for="M">Masculin</label> <input type="radio" id="M" name="sexe" value="M" <?php if($sexe=="M"){ echo "checked=\"checked\"";} ?>/> <label for="F">Féminin</label> <input type="radio" id="F" name="sexe" value="F" <?php if($sexe=="F"){ echo "checked=\"checked\"";} ?>/>
Cordialement,
Jordane
Oui mais le code php ici n'est valable que si sais Masculin qui est sélectionné ?
Car j'ai toujours la même erreur SQL :(.
Car j'ai toujours la même erreur SQL :(.
<?php // on teste si le visiteur a soumis le formulaire if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { // on teste l'existence de nos variables. On teste également si elles ne sont pas vides if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['sexe']) && !empty($_POST['sexe'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { // if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { // on teste les deux mots de passe if ($_POST['pass'] != $_POST['pass_confirm']) { $erreur = 'Les 2 mots de passe sont différents.'; } else { $base = mysql_connect ('192.168.1.22', '', ''); mysql_select_db ('test', $base); // on recherche si ce login est déja été utilisé par un autre membre $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); if ($data[0] == 0) { $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'", "'.mysql_escape_string($_POST['email']).'", "'.mysql_escape_string($_POST['sexe']).'")'; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); session_start(); $_SESSION['login'] = $_POST['login']; header('Location: membre.php'); exit(); } else { $erreur = 'Un membre posséde déja ce login.'; } } } else { $erreur = 'Au moins un des champs est vide.'; } } ?> <php $sexe = isset($_POST['sexe'])?$_POST['sexe']:"M"; ?> <html> <head> <title>Inscription</title> <link rel="stylesheet" media="screen" type="text/css" title="design.css" href="design" /> </head> <body> <div id="inscription"> <div class="inscription"> <a href="http://dieutopgun.synology.me">Accueil</a><br /> Inscription à l'espace membre :<br /><br /> <form class="Inscription" action="inscription.php" method="post"> Login :<br /> <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br /> <br />E-Mail :<br /> <input type="email" name="email" value="<? if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>"><br /> <br />Mot de passe :<br /> <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br /> <br />Confirmation du mot de passe : <br /><input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br /> <br /><label for="M">Masculin</label><input type="radio" id="M" name="sexe" value="M" <?php if($sexe=="M"){ echo "checked=\"checked\"";} ?>/> <label for="F">Féminin</label><input type="radio" id="F" name="sexe" value="F" <?php if($sexe=="F"){ echo "checked=\"checked\"";} ?>/> <br /> <br /><input type="submit" name="inscription" value="Inscription"> </form> </div> </div> <?php if (isset($erreur)) echo '<br />',$erreur; ?> </body> </html>
Bonjour j'ai ajouter comme vous avez dit au début de ma page voila le code qui s'affiche:
Array ( [login] => war [email] => CCM@ccm.com [pass] => CCMccm [pass_confirm] => CCMccm [sexe] => M [regagree] => valeur [inscription] => Inscription ) Erreur SQL !INSERT INTO membre VALUES("", "war", "9131c46e2ae4e6f9bc02724f00fb32ed", "CCM@ccm.com", "M")
Column count doesn't match value count at row 1
PS: j'ai fait une petite modification pour que les personnes qui s'inscrive doivent obligatoirement accepter le règlement. Sinon ils ne peuvent validé le formulaire.
<?php print_r($_POST); // on teste si le visiteur a soumis le formulaire if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { // on teste l'existence de nos variables. On teste également si elles ne sont pas vides if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['sexe']) && !empty($_POST['sexe'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { // if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { // on teste les deux mots de passe if ($_POST['pass'] != $_POST['pass_confirm']) { $erreur = 'Les 2 mots de passe sont différents.'; } else { $base = mysql_connect ('192.168.1.22', '', ''); mysql_select_db ('test', $base); // on recherche si ce login est déja été utilisé par un autre membre $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); if ($data[0] == 0) { $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'", "'.mysql_escape_string($_POST['email']).'", "'.mysql_escape_string($_POST['sexe']).'")'; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); session_start(); $_SESSION['login'] = $_POST['login']; header('Location: membre.php'); exit(); } else { $erreur = 'Un membre posséde déja ce login.'; } } } else { $erreur = 'Au moins un des champs est vide.'; } } ?> <php $sexe = isset($_POST['sexe'])?$_POST['sexe']:"M"; ?> <html> <head> <title>Inscription</title> <link rel="stylesheet" media="screen" type="text/css" title="design.css" href="design" /> <script type="text/javascript"> function ChangeStatut(formulaire) { formulaire.inscription.disabled=!formulaire.regagree.checked; } </script> </head> <body> <div id="inscription"> <div class="inscription"> <a href="http://dieutopgun.synology.me">Accueil</a><br /> Inscription à l'espace membre :<br /><br /> <form class="Inscription" action="inscription.php" method="post"> Login :<br /> <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br /> <br />E-Mail :<br /> <input type="email" name="email" value="<? if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>"><br /> <br />Mot de passe :<br /> <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br /> <br />Confirmation du mot de passe : <br /><input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br /> <br /><label for="M">Masculin</label><input type="radio" id="M" name="sexe" value="M" <?php if($sexe=="M"){ echo "checked=\"checked\"";} ?>/> <label for="F">Féminin</label><input type="radio" id="F" name="sexe" value="F" <?php if($sexe=="F"){ echo "checked=\"checked\"";} ?>/> <br /> <p><input type="checkbox" name="regagree" value="valeur" onClick="ChangeStatut(this.form)" /> J'accepte le reglement</p> <br /><input type="submit" name="inscription" value="Inscription" disabled > </form> </div> </div> <?php //if (isset($erreur)) echo '<br />',$erreur; ?> </body> </html>
Array ( [login] => war [email] => CCM@ccm.com [pass] => CCMccm [pass_confirm] => CCMccm [sexe] => M [regagree] => valeur [inscription] => Inscription ) Erreur SQL !INSERT INTO membre VALUES("", "war", "9131c46e2ae4e6f9bc02724f00fb32ed", "CCM@ccm.com", "M")
Column count doesn't match value count at row 1
PS: j'ai fait une petite modification pour que les personnes qui s'inscrive doivent obligatoirement accepter le règlement. Sinon ils ne peuvent validé le formulaire.
Voila pourquoi pour le moment je me suis dit je le crée dans la table mais je m'en sert pas.