par
kriss » 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
Code : Tout sélectionner
hobby` enum('internet','vélo','danse','cuisine','football','karaté') default NULL
Structure de la table :
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 ;
Mon formulaire :
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>
Mon script inscrire.php
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());
?>
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
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
[code]
hobby` enum('internet','vélo','danse','cuisine','football','karaté') default NULL
[/code]
Structure de la table :
[code]
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]
Mon formulaire :
[code]
<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]
Mon script inscrire.php
[code]
<?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());
?>
[/code]
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