Problème formulaire ajout type:radio

Résolu/Fermé
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - Modifié par flo39400 le 27/06/2015 à 16:42
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 28 juin 2015 à 12:27
Bonjour,
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.

5 réponses

jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
27 juin 2015 à 17:05
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 :
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") 

1
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
Modifié par flo39400 le 27/06/2015 à 18:44
Désolé je m'excuse mais je comprend pas du tout...
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
27 juin 2015 à 18:46
Le champs date de naissance déjà je sais même pas comment le crée pour le moment, car il faudrait une méthode simple car sinon ça vas être galère.
Voila pourquoi pour le moment je me suis dit je le crée dans la table mais je m'en sert pas.
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 737
27 juin 2015 à 17:28
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
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
27 juin 2015 à 17:37
J'ai rien compris, donc comme je disais j'ai bien dans ma base de donnée "test" une table "membre" puis des colonnes dont une qui ce nomme "sexe".
Le but sais que quand je sélectionne par exemple Masculin que cela affiche M dans la base de donnée.
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 737
27 juin 2015 à 17:49
déjà fais ce qu'a dit jordane
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
.....
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
27 juin 2015 à 18:01
Donc j'ai modifier et donc toujours la même erreur sauf que cette fois ci j'ai ça:

Erreur SQL !INSERT INTO membre VALUES("", "wargame", "4c5e99a2460c3513e3b754de8efe2155", "wargame@gmail.com", "M")
Column count doesn't match value count at row 1
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 737
Modifié par animostab le 27/06/2015 à 18:10
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
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
27 juin 2015 à 18:12
comment je peu changer cela pour que cela fonctionne correctement ?
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 737
27 juin 2015 à 18:56
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.
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
27 juin 2015 à 19:25
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.
0

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

Posez votre question
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
Modifié par jordane45 le 27/06/2015 à 19:45

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
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
28 juin 2015 à 08:39
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 :(.

<?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>
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
Modifié par flo39400 le 28/06/2015 à 12:19
Bonjour j'ai ajouter comme vous avez dit au début de ma page voila le code qui s'affiche:

<?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.
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
28 juin 2015 à 12:27
Sais bon tous marche merci Jordane45 vraiment, ça ma permis de réfléchir car sais normal que j'avais toujours erreur vu que j'ai ajouter le champs "date_naissance" et que je l'est pas renseigner il est normal que cela ne marche pas.
0