Recuperer, enregistrer et lire les valeurs de checkbox
Posté : 07 nov. 2006, 16:31
Salut
Bonsoir,
j'ai des difficultés à manipuler les cases à cocher dans mes formulaires.
Je donne la structure de ma table avec le champ hobby qui reçoit les valeurs de checkbox
Structure de la table :
Mon formulaire :
Mon script inscrire.php
Ma requête dinsertion est exécutée sans message d'erreur, seulement pour mon hobby sensé contenir les valeurs des checkbox, rien n'est inséré.
Après refelexion je ne sais pas si cela est dû :
1- un mauvais choix du type du champ hobby
2- un mauvais traitement au niveau PHP
Je voudrais une bonne volonté pour me donner un coup de main
Bonsoir,
j'ai des difficultés à manipuler les cases à cocher dans mes formulaires.
Je donne la structure de ma table avec le champ hobby qui reçoit les valeurs de checkbox
Code : Tout sélectionner
hobby` enum('internet','vélo','danse','cuisine','football','karaté') default NULL
Code : Tout sélectionner
CREATE TABLE `utilisateur` (
`id_user` bigint(20) NOT NULL auto_increment,
`pseudo` varchar(25) NOT NULL default '',
`nom` varchar(25) NOT NULL default '',
`prenom` varchar(75) NOT NULL default '',
`age` int(11) NOT NULL default '0',
`profession` varchar(50) NOT NULL default '',
`hobby` enum('internet','vélo','danse','cuisine','football','karaté') default NULL,
`email` varchar(75) NOT NULL default '',
`mdp` varchar(50) NOT NULL default '',
PRIMARY KEY (`id_user`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;
Code : Tout sélectionner
<form name="inscription" action="inscrire.php" method="post">
<body>
<table width="500" align="center" bgcolor="#99FFFF" class="bordure">
<tr><td bgcolor="#0000FF"><span class="Style10">Formulaire d'inscription au forum</span></td>
</tr>
<tr>
<td>
<div style="margin-bottom:3px; font-family: Arial, Helvetica, sans-serif; font-size: 10px;">
Pour être autorisé à envoyer des messages sur le forum, vous devez être inscrit.<br />
Veuillez indiquer le nom que vous souhaitez utiliser, votre adresse électronique <br />
et les autres informations mentionnées.
</div>
<div style="margin-bottom:3px"> <span class="Style4"><strong>Pseudo</strong>:</span><br />
<input type="text" name="pseudo" size="50" maxlength="25" value="" />
</div>
<fieldset>
<legend align="top" class="Style11">Mot de passe</legend>
<table cellpadding="0" cellspacing="3" border="0" width="400">
<tr>
<td colspan="2"><span class="Style4">Veuillez entrer un mot de passe pour votre compte utilisateur. Les mots de passe sont sensibles à la casse.</span></td>
</tr>
<tr>
<td>
<span class="Style9">Mot de passe:</span><br />
<input type="password" name="passe" size="25" maxlength="25" value="" /> </td>
<td>
<span class="Style9">Confirmez votre mot de passe:</span><br />
<input type="password" name="passeconfirm" size="25" maxlength="25" value="" /> </td>
</tr>
</table>
</fieldset>
<fieldset>
<legend align="top" class="Style11">Adresse E-mail</legend>
<table cellpadding="0" cellspacing="3" border="0" width="400">
<tr>
<td colspan="2"><span class="Style4">Veuillez entrer une adresse E-mail valide qui nous permettra de vous notifier l'activation de compte</span></td>
</tr>
<tr>
<td>
<span class="Style9">E-mail:</span><br />
<input type="text" name="email" size="25" maxlength="75" value="" /> </td>
<td>
<span class="Style9">Confirmez votre E-mail:</span><br />
<input type="text" name="emailconfirm" size="25" maxlength="75" value="" /> </td>
</tr>
</table>
</fieldset>
<fieldset>
<legend align="top"><span class="Style11">Informations personnelles</span></legend>
<table cellpadding="0" cellspacing="3" border="0" width="400">
<tr>
<td colspan="2"><span class="Style4">Veuillez nous communiquer quelques informations personnelles</span></td>
</tr>
<tr>
<td>
<span class="Style9">Nom:</span>
<input type="text" name="nom" size="15" maxlength="25" value="" />
<span class="Style9">Prenom:</span>
<input type="text" name="prenom" size="25" maxlength="50" value="" />
</tr>
<tr>
<td>
<span class="Style9">Age:</span>
<select name="age"> <?PHP for ($i=15; $i<=120; $i++) echo '<option>'.$i.'</option>';?> </select>
<span class="Style9"> Profession:</span>
<select name="profession">
<option >Informatique </option>
<option >Profession libérale </option>
<option >Commercial </option>
</select>
</td>
</tr>
</table>
</fieldset>
<fieldset>
<legend align="top"><span class="Style11">Vos centres d'intérêt </span></legend>
<table cellpadding="0" cellspacing="3" border="0" width="400">
<tr>
<td><input type="checkbox" name="choix[]" Value "Internet" align="right" /><span class="Style12">Internet</span></td>
<td><input type="checkbox" name="choix[]" Value "Velo" align="right"/><span class="Style12">Vélo</span></td>
</tr>
<tr>
<td><input type="checkbox" name="choix[]" Value "Danse" /><span class="Style12">Danse</span></td>
<td><input type="checkbox" name="choix[]" Value "Cuisine" /><span class="Style12">Cuisine</span></td>
</tr>
<tr>
<td><input type="checkbox" name="choix[]" Value "Footaball" /><span class="Style12">Football</span></td>
<td><input type="checkbox" name="choix[]" Value "Karate" /><span class="Style12">Karaté</span></td>
</tr>
</table>
</fieldset>
</tr>
</td>
<tr>
<td align="center"> <input type="submit" name="inserer" value="Enregistrer" /> <input type="reset" name="initialiser" value="Initialiser" /></td>
</tr>
</table>
</form>
Code : Tout sélectionner
<?PHP
include('../connexion.php'); // Appel du script de connexion à la base de données
//Récupération des champs
if (isset($_POST['pseudo']))
$pseudo=$_POST['pseudo'];
else
$pseudo="";
if (isset($_POST['passe']))
$passe1=$_POST['passe'];
else
$passe1="";
if (isset($_POST['passeconfirm']))
$passe2=$_POST['passeconfirm'];
else
$passe2="";
if (isset($_POST['email']))
$email1=$_POST['email'];
else
$email1="";
if (isset($_POST['emailconfirm']))
$email2=$_POST['emailconfirm'];
else
$email2="";
if (isset($_POST['nom']))
$nom=$_POST['nom'];
else
$nom="";
if (isset($_POST['prenom']))
$prenom=$_POST['prenom'];
if (isset($_POST['age']))
$age=$_POST['age'];
else
$age="";
if (isset($_POST['profession']))
$profession=$_POST['profession'];
else
$profession="";
if (isset($_POST['choix']))
$choix=$_POST['choix'];
else
$choix="";
//On vérifie si les champs ne sont pas vides
if(empty($pseudo) OR empty($nom) OR empty($prenom) OR empty($email1) OR empty($email2) OR empty($age) OR empty($profession))
{
echo '<font color="red">Attention, il y a des champs obligatoires qui ne sont pas renseignés!</font>';
}
//Vérification de l'unicité du pseudo choisi
$StrSQL="Select pseudo From utilisateur where pseudo like '$pseudo'";
$RstPseudo = @mysql_query($StrSQL);
$compteur = @mysql_num_rows($RstPseudo);
if ($compteur = 0)
{
//le pseudo saisi est déjà utilisé
echo '<font color="red">Attention, ce pseudo est déjà utilisé !</font>';
exit;
}
//
//foreach($choix as $cle => $valeur)
// {
// $choix =$cle.' : '.$valeur.'-';
//}
$variable = implode(",",$choix);
//vérification de la validité de l'adresse E-mail
//Ecriture de la réquête d'insertion
$StrSQL ="INSERT INTO utilisateur (pseudo, nom, prenom, age, profession, hobby, email, mdp)";
$StrSQL .="VALUES ('$pseudo','$nom', '$prenom', '$age', '$profession', '$variable', '$email1', '$passe1')";
//Insertion des informations du formulaire
$RstPseudo = @mysql_query($StrSQL) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
?>
Après refelexion je ne sais pas si cela est dû :
1- un mauvais choix du type du champ hobby
2- un mauvais traitement au niveau PHP
Je voudrais une bonne volonté pour me donner un coup de main