Comment stocker plusieurs checkbox

Fermé
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017 - 8 sept. 2015 à 11:33
 Dev1 - 16 sept. 2015 à 12:26
Bonjour,
J'ai réussi à insérer une liste de checkbox dans ma table. Je reconnais qu'insérer plusieurs valeurs dans un seul champ n'est pas très pratique, alors on m'a parlé d'une solution c'est de rajouter une table supplémentaire, ce qui fait que j'aurais une seule valeur par champ.
Le souci c'est que déjà, je ne comprends pas en quoi créer une table peut résoudre le problème, ensuite j'aimerais savoir si c'est le cas comment faire.

Exemple :
Nationalité : (2 valeurs)
- Française
- Étrangère
Cas 1 : Française
Cas 2 : Étrangère
Cas 3 : Française + Étrangère
Cas 4 : NULL.

Et j'ai une liste de pays, là je ne pourrais pas mettre tous les cas :P.

Quelle est la solution selon vous ?
A voir également:

2 réponses

Bonjour geekat,

Je vous donne quelques adresses pour apprendre le sql.

http://www.1keydata.com/fr/sql/
http://sqlpro.developpez.com/cours/sqlaz/select/
http://www.w3schools.com/sql/default.asp

Après, je sais afficher dans un sélecte le contenu d'une table mais un checkbox je ne sais pas.
Sinon, il faut prévoir une ligne pour tous les cas possibles

Un exemple pour avoir la liste des éléments d'une table



echo "<form method='post' action='resultat.php'>\n";
echo "<center>";
echo "<table class=\"green\">";
echo "<tr><td>Client</td>";
echo "<td>";

//recuperation de la liste des clients
$query = "SELECT id_client, nom_client";
$query .= "FROM clients";
$query .= ";";
//echo "<br>query = $query <br>";
$result = execute_query($query);

//creation select avec liste des clients
echo "<select id='id_client' name='id_client'>";
while($row = mysql_fetch_array($result)) {
$id_client = $row[0];
$nom_client = $row[1];
echo " <option value='" . $id_client . "'>" . $nom_client . "</option>";
}//end while
echo "</select>";
echo "</td>";
echo "</tr>";


echo "<tr><td></td><td><input type='submit'></td></tr>\n";

echo "</tr>";
echo "</td>";
echo "</table>";
echo "</form><br/>\n";




Dans la page où vous voulez récupérer la donnée sélectinnée, il faudra mettre ceci

if(isset($_REQUEST["id_client"   		])) {$id_client    					= $_REQUEST["id_client"    			];}
1
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
10 sept. 2015 à 09:20
Merci beaucoup pour votre réponse et pour les liens :).
0
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 114
10 sept. 2015 à 10:06
Bonjour,

Je ne comprend pas trop le soucis, ou du moins la question.
Ton but est de savoir ce qu'à cocher la personne ?

Si c'est le cas il te faut juste une table avec 2 champs mini (il faut rajouter un ID ou truc genre pour savoir qui a répondu quoi) :
- Un champ "Française"
- Un champ "Étrangère"

Après tu as juste a bien gérer ton formulaire d'envoi et selon, enregistrer une certaine valeur dans les champs de ta base :

Si il a coché uniquement Française : Française = 1 et Étrangère = 0
Si il a coché uniquement Étrangère : Française = 0 et Étrangère = 1
etc..

Et quand tu récupère tes résultats tu sais si c'est null (tout à 0) ou l'inverse (tout à 1) ou une seule réponse.

En espérant avoir compris ton problème et t'avoir aidé
0
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
10 sept. 2015 à 10:18
Bonjour, merci pour votre réponse.
En fait je réussis à stocker les valeurs de cette façon : plusieurs valeurs dans un seul champ séparées par un séparateur. (Exp : champ nationalite : FR ETR)
Mais je trouve le souci pour stocker des valeurs de type clés étrangères, si le champ 'nationalite' est une clé étrangère, comment pourrais-je stocker FR et ETR ?
J'ai cru entendre que réaliser une autre table repoudrerait le problème mais je ne sais pas du tout comment.
0
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 114
10 sept. 2015 à 10:23
Je suis vraiment désolé mais je ne comprend pas le soucis,
si tu utilise un séparateur dans le champs tu peux entrer autant de valeurs que tu le souhaites et les séparer par la suite par un explode() par exemple.

Je ne vois pas ce qui bloque ^^
0
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
10 sept. 2015 à 10:29
Oui, j'ai utilisé explode(), ça marche bien pour des champs simples. Le souci maintenant c'est que je souhaite utiliser explode() sur un champ qui est une clé étrangère. Est-ce de l'utiliser dans ce cas-là ?
0
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 114
10 sept. 2015 à 10:31
qu'est ce que tu veux dire par "clé étrangère" ?
0
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
10 sept. 2015 à 10:36
une clé étrangère est un champ d'une table qui dépend d'une autre table, c'est la clé primaire de cette autre table.
0