Problème formulaire ajout type:radio [Résolu/Fermé]

Signaler
Messages postés
594
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
-
Messages postés
594
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
-
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

Messages postés
29159
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 août 2020
2 669
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 56918 internautes nous ont dit merci ce mois-ci

Messages postés
594
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
Désolé je m'excuse mais je comprend pas du tout...
Messages postés
594
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
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.
Messages postés
2853
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
11 novembre 2019
569
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
Messages postés
594
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
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
Messages postés
2853
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
11 novembre 2019
569
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
Messages postés
594
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
comment je peu changer cela pour que cela fonctionne correctement ?
Messages postés
2853
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
11 novembre 2019
569
je t'ai donné la solution pour inserer la valeur de sexe dans la BDD et donné les explications pour l'input radio (parce que copier coller sans comprendre c'est mal!) .... mais as tu fais ce que jordane a dit? ---> apparement NON
parce que tu as mis -1 a sa reponse et l'a envoyé boulé alors que le warning sql vient de ce qu'il t'a dit
voir ici pour une explication
https://www.vulgarisation-informatique.com/faq-419--column-count-doesnt-match-value-at-row-1.php
donc des escuses a jordane s'imposent !!!
Messages postés
594
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
Je suis déjà aller voir ça pour moi sais renseigner donc je comprend pas voila....
PS: Oui il est vrai que je ne comprend pas donc ce que j'ai fait ce n'est pas bien....
Messages postés
2853
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
11 novembre 2019
569
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.
Messages postés
594
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
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.
Messages postés
29159
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 août 2020
2 669

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
Messages postés
594
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
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>
Messages postés
594
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
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.
Messages postés
594
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
11 mai 2018
18
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.