[php] checkbox cochées

Fermé
Katy - 13 juin 2008 à 18:15
X-Fan Messages postés 805 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 6 janvier 2010 - 13 juin 2008 à 20:50
Bonjour,
j'ai un site internet sur lequel j'ai des checkbox... et j'ai aussi une base de données..... j'aurais voulu que lorsqu'un adhérent se connecte les checkbox soient déjà cochées par rapport aux activités qu'il a choisi .... je ne sais pas si c'est très clair.... et je ne vois pas comment faire

merci de votre aide
katy
A voir également:

3 réponses

X-Fan Messages postés 805 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 6 janvier 2010 24
13 juin 2008 à 20:50
Tu crées des champs dans ta base de données.
Moi je les crée en int. Si j'ai 6 checkbox, je vais créer 6 champs dans ma base de données en leur donnant un nom significatif du genre ckb1, ckb2, ckb3, etc...

Je dois avoir le même nombre de champ int dans ma base de données que j'aurais de checkbox à selectionné. Ensuite, quand l'utilisateur choisi ses paramètres, j'enregistre la valeur dans la base de données. Pour chaque case, j'attribue la valeur 1 ou 0 (1=coché et 0=non coché).

Donc si par exemple tu as 6 checkbox. Moi je décide de cocher la 1, la 4 et la 6. Dans la base de donnés, on va trouver la ligne correspodant à mon ID et on va faire instert/update (dépend du cas).
Bref, ma ligne de Base de données devrait avoir l'air de:

ID (le mien): 1
ckb1: 1
ckb2: 0
ckb3: 0
ckb4: 1
ckb5: 0
ckb6: 1

Lorsque tu vas relire la ligne pour savoir ce que j'avais coché, tu vas extraire la ligne du ID 1 (qui est moi dans l'exemple) et tu vas récupérer les valeurs des 6 autres champs ckb.
Et ensuite tu regardes quelle valeur est inscrite dans chaque champ.

if ($ckb1 == 1){
$ckbform1checked = 'checked="yes"';
}else{
$ckbform1checked = '';
}
if ($ckb2 == 1){
$ckbform2checked = 'checked="yes"';
}else{
$ckbform2checked = '';
}
... etc ... selon le nombre de champ

Et ensuite tu crées le formulaire à afficher

<input type="checkbox" name="ckbform1" value="ce que tu veux ici" '.$ckbform1checked.' />
<input type="checkbox" name="ckbform2" value="ce que tu veux ici" '.$ckbform2checked.' />
... etc ... selon le nombre de checkbox

Donc en lisant les 6 champs, chaque fois que tu en trouves 1 qui a la valeur 1 (donc coché), et bien tu ajoutes un bout de code html à ton input checkbox dont la fonction et de coché la case par défaut (attribut: checked="yes" coche la case par défaut et c'est ce que j'ajoute si le champ de base de donnés associés et à 1).
1
X-Fan Messages postés 805 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 6 janvier 2010 24
13 juin 2008 à 18:51
Ben tu dois avoir des champs de Base de données prédéfinis au même compte que tes checkbox.

Donc tu décides ça par exemple:
Ma BD: id, ckb1, ckb2, ckb3

ckb c'est ChecKBox avec 1,2,3, etc selon combien tu en as et ces champs sont des INT. Moi, quand je gère ça, j'insère dans ma base de données des 1 et des 0 (1=coché et 0=pas coché).

Dans ta page, tu lis la BD (la ligne correspondant à l'utilisateur actif) et tu récupères donc les valeurs ckb1, ckb2 et ckb3.

Avec un if, tu détermines les champs à 1 et tu utilises des variables pour l'option selected.
Un truc du genre:

if ($ckb1 == 1){
$ckbform1checked = 'checked="yes"';
}else{
$ckbform1checked = '';
}

Et cela pour tous les checkbox (bien sur, récupérer une valeur de BD ne se fait pas comme ça mais tu dois savoir faire ça --> query et fetch blablabla).

Ensuite tu installes 3 checkbox dans ton formulaire:
<input type="checkbox" name="ckbform1" value="ce que tu veux ici" '.$ckbform1checked.' />
<input type="checkbox" name="ckbform2" value="ce que tu veux ici" '.$ckbform2checked.' />
<input type="checkbox" name="ckbform3" value="ce que tu veux ici" '.$ckbform3checked.' />
...

En gros, si les cases sont à un dans la BD, tu ajours dynamiquement l'attribut checked=yes. Et si la valeur est à 0, ca enfile rien.
0
merci pour ta réponse
je ne saisie pas bien ce que tu entends par

"Donc tu décides ça par exemple:
Ma BD: id, ckb1, ckb2, ckb3"

je ne vois pas trop a quoi ça correspond.....


merci de ton aide

Katy
0