Récupérer valeur de checkbox dans bdd
dallap
-
dallap -
dallap -
Bonjour,
j'ai dans un formulaire avec des checkbox à cocher :
Que souhaiteriez-vous :<br />
<input type="checkbox" name="souhait[]" id="souhait[]" value="telechargements" /> Plus de téléchargements<br />
<input type="checkbox" name="souhait[]" id="souhait[]" value="tutoriaux" /> Plus de tutoriaux/astuces<br />
<input type="checkbox" name="souhait[]" id="souhait[]" value="liens" /> Plus de liens<br />
<input type="checkbox" name="souhait[]" id="souhait[]" value="news" /> Plus de news<br />
<input type="checkbox" name="souhait[]" id="souhait[]" value="forum" /> Un forum<br />
<input type="checkbox" name="souhait[]" id="souhait[]" value="membre" /> Un espace membre<br /><br />
et je souhaiterais recuperer les valuer (liens, forum...) dans ma base de donnée. j'ai essayé de nombreuses solutions trouvées sur des forum comme:
1:
if (isset($_POST['souhait'])) {
for ($i = 0, $c = count($_POST['souhait']); $i < $c; $i++) {
$sql="insert into questionnaire(souhait) values('$monchoix')";
mysql_query($sql) or die ('erreur sur '.$sql.'<br/>'.mysql_error());
}
}
ou
2:
$monchoix = implode (" ", $souhait);
$sql="insert into questionnaire(souhait) values('$monchoix')";
mysql_query($sql) or die ('erreur sur '.$sql.'<br/>'.mysql_error());
$souhait=$_POST['souhait[]'];
mais je n'arrive pas a les insérer, j'ai déclaré mon champ "souhait" en TEXT puis en SET, lequel est le mieux?
je me suis également inspiré de cette page mais je n'arrive toujours pas:
http://julp.developpez.com/php/formulaires/#L4
pourriez vous m'aider svp?
merci!
j'ai dans un formulaire avec des checkbox à cocher :
Que souhaiteriez-vous :<br />
<input type="checkbox" name="souhait[]" id="souhait[]" value="telechargements" /> Plus de téléchargements<br />
<input type="checkbox" name="souhait[]" id="souhait[]" value="tutoriaux" /> Plus de tutoriaux/astuces<br />
<input type="checkbox" name="souhait[]" id="souhait[]" value="liens" /> Plus de liens<br />
<input type="checkbox" name="souhait[]" id="souhait[]" value="news" /> Plus de news<br />
<input type="checkbox" name="souhait[]" id="souhait[]" value="forum" /> Un forum<br />
<input type="checkbox" name="souhait[]" id="souhait[]" value="membre" /> Un espace membre<br /><br />
et je souhaiterais recuperer les valuer (liens, forum...) dans ma base de donnée. j'ai essayé de nombreuses solutions trouvées sur des forum comme:
1:
if (isset($_POST['souhait'])) {
for ($i = 0, $c = count($_POST['souhait']); $i < $c; $i++) {
$sql="insert into questionnaire(souhait) values('$monchoix')";
mysql_query($sql) or die ('erreur sur '.$sql.'<br/>'.mysql_error());
}
}
ou
2:
$monchoix = implode (" ", $souhait);
$sql="insert into questionnaire(souhait) values('$monchoix')";
mysql_query($sql) or die ('erreur sur '.$sql.'<br/>'.mysql_error());
$souhait=$_POST['souhait[]'];
mais je n'arrive pas a les insérer, j'ai déclaré mon champ "souhait" en TEXT puis en SET, lequel est le mieux?
je me suis également inspiré de cette page mais je n'arrive toujours pas:
http://julp.developpez.com/php/formulaires/#L4
pourriez vous m'aider svp?
merci!
A voir également:
- Récupérer valeur de checkbox dans bdd
- Recuperer message whatsapp supprimé - Guide
- Comment récupérer un document dans le presse-papier samsung - Guide
- Impossible de récupérer mon compte gmail - Guide
- Récupérer mon compte facebook désactivé - Guide
- Comment récupérer un compte facebook piraté - Guide
11 réponses
De cette façon.
Attention aussi aux ids de tes input, ils doivent-être uniques ;)
$valeursAutorisees = array('telechargements', 'tutoriaux', 'liens', 'news', 'forum', 'membre'); if( !empty($_POST['souhait']) && is_array($_POST['souhait']) ) { $_POST['souhait'] = array_unique($_POST['souhait']); $values = null; foreach( $_POST['souhait'] as $souhait ) { if( in_array($souhait, $valeursAutorisees) ) $values .= '(' . $souhait . '),'; } if( $values != null ) { $sql= 'INSERT INTO questionnaire(souhait) VALUES ' . rtrim($values, ','); mysql_query($sql) or exit(erreur sur '.$sql.'<br/>'.mysql_error()); // Nombre de lignes insérées echo mysql_affected_rows() . ' lignes insérées'; } }
Attention aussi aux ids de tes input, ils doivent-être uniques ;)
tout d'abord merci de ta réponse, mais j'ai un message d'erreur.
Parse error: syntax error, unexpected T_STRING in .../www/questionnaire2.php on line 73
je ne vois pas ce qui cloche dans cette ligne
mysql_query($sql) or exit(erreur sur '.$sql.'<br/>'.mysql_error());
j'ai également modifié mes ID:
<table align="center" border="0"><tr><td colspan="2"><u> Que souhaiteriez-vous :</u></td></tr>
<tr><td align="right"><input type="checkbox" name="souhait[]" id="telechargements" value="telechargements" /></td><td>Plus de téléchargements</td></tr>
<tr><td align="right"><input type="checkbox" name="souhait[]" id="tutoriaux" value="tutoriaux" /></td><td>Plus de tutoriaux/astuces</td></tr>
<tr><td align="right"><input type="checkbox" name="souhait[]" id="liens" value="liens" /></td><td>Plus de liens</td></tr>
<tr><td align="right"> <input type="checkbox" name="souhait[]" id="news" value="news" /></td><td>Plus de news</td></tr>
<tr><td align="right"> <input type="checkbox" name="souhait[]" id="forum" value="forum" /></td><td>Un forum</td></tr>
<tr><td align="right"> <input type="checkbox" name="souhait[]" id="membre" value="membre" /></td><td>Un espace membre</td></tr></table>
Parse error: syntax error, unexpected T_STRING in .../www/questionnaire2.php on line 73
je ne vois pas ce qui cloche dans cette ligne
mysql_query($sql) or exit(erreur sur '.$sql.'<br/>'.mysql_error());
j'ai également modifié mes ID:
<table align="center" border="0"><tr><td colspan="2"><u> Que souhaiteriez-vous :</u></td></tr>
<tr><td align="right"><input type="checkbox" name="souhait[]" id="telechargements" value="telechargements" /></td><td>Plus de téléchargements</td></tr>
<tr><td align="right"><input type="checkbox" name="souhait[]" id="tutoriaux" value="tutoriaux" /></td><td>Plus de tutoriaux/astuces</td></tr>
<tr><td align="right"><input type="checkbox" name="souhait[]" id="liens" value="liens" /></td><td>Plus de liens</td></tr>
<tr><td align="right"> <input type="checkbox" name="souhait[]" id="news" value="news" /></td><td>Plus de news</td></tr>
<tr><td align="right"> <input type="checkbox" name="souhait[]" id="forum" value="forum" /></td><td>Un forum</td></tr>
<tr><td align="right"> <input type="checkbox" name="souhait[]" id="membre" value="membre" /></td><td>Un espace membre</td></tr></table>
hum encore désolé mais je n'arrive pas, j'ai toujours le message d'erreur :
erreur sur INSERT INTO questionnaire(souhait) VALUES (forum)
Unknown column 'forum' in 'field list'
(pour chaque case que je coche)
dans ma table questionnaire j'ai pourtant 'souhait' de type SET avec comme valeurs :
'telechargements', 'tutoriaux', 'liens', 'news', 'forum', 'membre'
ca devrait être bon non? :(
erreur sur INSERT INTO questionnaire(souhait) VALUES (forum)
Unknown column 'forum' in 'field list'
(pour chaque case que je coche)
dans ma table questionnaire j'ai pourtant 'souhait' de type SET avec comme valeurs :
'telechargements', 'tutoriaux', 'liens', 'news', 'forum', 'membre'
ca devrait être bon non? :(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oups désolé, j'ai oublié les quotes.
$values .= '(' . $souhait . '),';
Par :
$values .= '(\'' . $souhait . '\'),';
$values .= '(' . $souhait . '),';
Par :
$values .= '(\'' . $souhait . '\'),';
pas de soucis ;)
bon ca marche mais c'est pas exactement ce a quoi je m'attendais,
si je coche 3 cases j'ai 3 enregistrements, un pour chaque case cochée...
y'a pas moyen d'avoir dans le champ "souhait" les 3 valeurs cochées j'imagine ...
bon ca marche mais c'est pas exactement ce a quoi je m'attendais,
si je coche 3 cases j'ai 3 enregistrements, un pour chaque case cochée...
y'a pas moyen d'avoir dans le champ "souhait" les 3 valeurs cochées j'imagine ...
Pourquoi voudrais-tu enregistrer plusieurs valeurs dans un seul champ ?
En faisant ça, tu sera obligé de faire des manips complexes pour compter tes résultats, faire des mises à jour, etc...
Déjà, qu'une seule table pour faire ça, c'est pas le top.
En faisant ça, tu sera obligé de faire des manips complexes pour compter tes résultats, faire des mises à jour, etc...
Déjà, qu'une seule table pour faire ça, c'est pas le top.
en fait c'est un champs de formulaire que je souhaiterai stocker.
voici un apercu de ma table ainsi que du formulaire:
http://i.imagehost.org/0963/Sans_titre.jpg
voici un apercu de ma table ainsi que du formulaire:
http://i.imagehost.org/0963/Sans_titre.jpg
et dans la colonne souhait je souhaiterai pouvoir stocker plusieurs variables (si l'utilisateur coche plusieurs cases de la checkbox)
peu etre qu'il existe un moyen plus simple de le faire...
merci
peu etre qu'il existe un moyen plus simple de le faire...
merci
Le meilleur moyen, c'est de créer des tables supplémentaires et de supprimer cette colonne de ta table.
Une première table souhait(id_souhait, nom_souhait) où seront stocker les valeurs "téléchargements, liens, etc...".
Une seconde table membre_souhait(id_membre_souhait, id_membre, id_souhait) qui servira à faire la relation entre ta table souhait et ta table membre dont tu dois ajouter impérativement un id, qui ne contiendra que 3 colonnes.
Cela peut paraitre complexe au premier abord, mais cela te simplifiera grandement la manipulation de tes données en faisant un schéma de table normalisé.
Une première table souhait(id_souhait, nom_souhait) où seront stocker les valeurs "téléchargements, liens, etc...".
Une seconde table membre_souhait(id_membre_souhait, id_membre, id_souhait) qui servira à faire la relation entre ta table souhait et ta table membre dont tu dois ajouter impérativement un id, qui ne contiendra que 3 colonnes.
Cela peut paraitre complexe au premier abord, mais cela te simplifiera grandement la manipulation de tes données en faisant un schéma de table normalisé.