salut
comment je peux afficher 5 checkbox par ligne, au lieu d 'afficher tout dans un seul th ?Code:
1
2
3
4
5
6 foreach ($this->caractere as $k=>$v): echo "<th><input type='checkbox' value=\"".$v["id"]."\"/>".$v["name"]."</th>"; endforeach;
Version imprimable
salut
comment je peux afficher 5 checkbox par ligne, au lieu d 'afficher tout dans un seul th ?Code:
1
2
3
4
5
6 foreach ($this->caractere as $k=>$v): echo "<th><input type='checkbox' value=\"".$v["id"]."\"/>".$v["name"]."</th>"; endforeach;
bah, selon ton code tu affiche un checkbox par <th>, tous tes checkbox ne sont pas dans le même <th>, alors je ne vois pas très bien ton problème
Ce que je comprend de ton problème c'est que tu veux un maximum de 5 checkbox par ligne. Or, dans un tableau, une ligne est définie par une paire de marqueurs <tr></tr>. Donc, si tu veux bloquer ton nombre de checkbox, tu peux utiliser le modulo de cette façon:
De cette façon, ton tableau va changer de ligne à toute les 5 cellules. Remarque également que tu peux utiliser les accolades au lieu du "end foreach". Et si j'étais toi, j'utiliserais la clause "<td>" plutôt que "<th>".Code:
1
2
3
4
5
6
7
8
9
10
11
12 $compteur = 0; foreach ($this->caractere as $k=>$v): { if ($compteur % 5 == 0) echo "<tr>"; echo "<th><input type='checkbox' value=\"".$v["id"]."\"/>".$v["name"]."</th>"; if ($compteur % 5 == 0) echo "</tr>"; $compteur++; }
Bonne chance.
Osu
merci osuwariboy
j'ai fait ce que tu m'a proposé
j'ai eu comme resultat :
dans le premier tr
et dans le 2eme <tr> :Code:
1
2
3<tr> <td> <input type ="chekbox"> 3g</td> <tr>
mais moi je veux que dans chaque tr j'aurai 5 tdCode:
1
2
3
4
5
6
7 <tr> <td><input type ="chekbox"> aaa</td> <td><input type ="chekbox"> bbb</td> <td><input type ="chekbox"> ccc</td> <td><input type ="chekbox"> ddd</td> </tr>
[/QUOTE]Code:
1
2
3
4
5
6
7
8 <tr> <td><input type ="chekbox"> aaa</td> <td><input type ="chekbox"> bbb</td> <td><input type ="chekbox"> ccc</td> <td><input type ="chekbox"> ddd</td> <td><input type ="chekbox"> eeee</td> </tr>
ce serait plutôt dans la boucle
Code:
1
2
3
4
5
6
7
8
9
10
11
12 $compteur = 0; foreach($this->caractere as $k=>$v){ if($compteur%5 ==0) echo '<tr>'; $compteur++; echo "<th><input type='checkbox' value=\"".$v["id"]."\"/>".$v["name"]."</th>"; if($compteur%5 == 0) echo '</tr>'; }
merci, ca marche
Salut
Il y a pourtant une erreur, des <th> tout le temps. 8OCitation:
merci, ca marche
C'est à mon sens un bon exercice qu'il serait pas mal de réussir soit même, car c'est de la logique pure ;)
Il y a une chose que tu ne dis pas, c'est au niveau de ta boucle.
Tu veux mettre 5 colonnes, Ok, mais est-ce que le nombre total sera obligatoirement un multiple de 5 ?
Si ce n'est pas le cas, ça va causer un problème pour les dernières colonnes.
Admettons que le nombre total soit 7 (donc ça va boucler 7 fois), la 1ère ligne aura bien 5 colonnes, mais la 2ème en aura que 2 (manquera 3).
Du coup, si tu ne fais rien le code HTML généré comportera une erreur.
Il faudra gérer le cas, et là, il peu avoir plusieurs solutions : (j'en mets que 2)
-> Soit on génère les colonne vides manquantes pour obtenir toujours 5 colonnes à la fin.
-> Soit on rajoute une instruction au niveau HTML pour faire une fusion sur la dernière colonne (un colspan="4" dans l'exemple car 1 + 4 fusionnées).
(faudra faire un calcul pour savoir combien il en manquera)
Sinon, faut éviter les tableaux (ce qui serait mieux, car les tableaux ne sont pas des éléments adaptés à toute sorte de contenu).