Page 1 sur 1

checkbox

Posté : 18 févr. 2009, 18:56
par fouf1
salut a tous

question?
j'ai une requête qui me génère des checkbox dans un tableau exemple
//REQUETE POUR LES CHECKBOX
while ($dept = mysql_fetch_assoc($résultat)):
	$i++;
        if (isset($_GET['cmbProvince'.$i]))
{
echo"<table><tr><td>";
$msg.= '<input type="checkbox" checked="checked" name="cmbProvince'.$i.'" id="cmbProvince'.$i.'" value="'.$dept['id'].'" onClick="verifProv(this,'.$nb.');"/><label for="cmbProvince'.$i.'">'.$dept['nom'].' ('.$nombre_de_locations2.' Locations)</label><br />'."\n";
echo"</td></tr></table>";
}
else
{
echo"<table><tr><td>";
$msg.= '<input type="checkbox" name="cmbProvince'.$i.'" id="cmbProvince'.$i.'" value="'.$dept['id'].'" onClick="verifProv(this,'.$nb.');"/><label for="cmbProvince'.$i.'">'.$dept['nom'].' ('.$nombre_de_locations2.' Locations)</label><br />'."\n";
echo"</td></tr></table>";
}
donc il créer une colonne de 20 checkox exemple comment fair pour couper en deux colonnes?

j'ai test de redim mon tableau mais non surement un des css qui ne veux pas

merci

Posté : 19 févr. 2009, 01:03
par rolusseum
A mon avis, ce n'est pas "20 colonnes", mais plutôt 20 tables qui sont créees.

Posté : 19 févr. 2009, 11:37
par Ryle
C'est effectivement tout un tableau HTML que tu génères à chaque itération de ton while.

Si tu veux faire des colonnes, il te faut spécifier plusieurs cellules (<td>) à l'intérieur d'une ligne (<tr>) qui sont elles mêmes contenues par un tableau (<table>).

Il te faudrait donc au final générer un seul tableau html, avec autant de lignes que nécessaires et de colonnes que souhaitée :
<table>
  <tr>
    <td>Ligne 1 / Cellule 1</td>
    <td>Ligne 1 / Cellule 2</td>
    ...
  </tr>
  <tr>
    <td>Ligne 2 / Cellule 1</td>
    <td>Ligne 2 / Cellule 2</td>
    ...
  </tr>
</table>
A toi ensuite de remplir les cellules comme bon te semble. Il y a un tuto dans la FAQ pour présenter des galeries d'images dans un tableau... il peut facilement être adapté pour présenter une galerie de checkbox ;)

Posté : 19 févr. 2009, 12:11
par fouf1
oui pardon :oops:
<table>
//REQUETE POUR LES CHECKBOX
while ($dept = mysql_fetch_assoc($résultat)):
    $i++;
        if (isset($_GET['cmbProvince'.$i]))
{
echo"<tr><td>";
$msg.= '<input type="checkbox" checked="checked" name="cmbProvince'.$i.'" id="cmbProvince'.$i.'" value="'.$dept['id'].'" onClick="verifProv(this,'.$nb.');"/><label for="cmbProvince'.$i.'">'.$dept['nom'].' ('.$nombre_de_locations2.' Locations)</label><br />'."\n";
echo"</td></tr>";
}
else
{
echo"<tr><td>";
$msg.= '<input type="checkbox" name="cmbProvince'.$i.'" id="cmbProvince'.$i.'" value="'.$dept['id'].'" onClick="verifProv(this,'.$nb.');"/><label for="cmbProvince'.$i.'">'.$dept['nom'].' ('.$nombre_de_locations2.' Locations)</label><br />'."\n";
echo"</td></tr>";
} 

</table>




mais comment dire a mes colonnes toi tu prend ligne 123.. & toi 789...

Posté : 19 févr. 2009, 12:30
par Ryle
Alors la version simple consiste à dire que la première colonne prend les 1,3,5 et la seconde les 2,4,6.

En effet, en html, tu construits des tableaux en ligne. Tu peux donc facilement créer une nouvelle ligne (<tr>), renseigner deux cellules 1 et 2 (<td></td>), fermer la ligne après le 2ème (</tr>) et recommencer pour 3 et 4, 5 et 6, etc.

L'idée est en fait d'ajouter une nouvelle cellule à chaque itération du while, et de placer les débuts et fin de ligne, respectivement à chaque premier et deuxième élément (et pour ça, l'opérateur modulo est sans doute ton meilleur ami :))


Ca se complique un peu si tu tiens absolument avoir 1,2,3 à gauche et 4,5,6 à droite, mais c'est faisable également, il faut pour cela passer par un tableau intermédiaire grace auquel tu vas pouvoir trier tes données pour les afficher dans tes cellules (1,4,2,5,3,6)