un tableau dynamique ...mais fixer le nb de colonnes

Eléphanteau du PHP | 35 Messages

26 janv. 2009, 19:10

bonjour
je récupère d'une bdd des prénoms et je souhaite les afficher en tableau de 10 colonnes
donc chaque prénom dans une case d'un tableau n lignes et 10 colonnes
voilà mon code mais celui ci me mets tout en ligne et j'arrive pas à lui dire qu'au bout du 10 ème prénoms on commence une autre ligne (j'accole une check box à chaque prénom pour pouvoir les sélectionner)

<tr>
<?php
 
$resultat=mysql_query("SELECT prenom,droits FROM membres WHERE droits = 1") or exit(mysql_error());

while ($donnee = mysql_fetch_array($resultat)){
$nom=$donnee['nom'];
$prenom=$donnee['prenom'];
?>			<td>
		<?php echo '<label>'.$prenom.'</label> <input type="checkbox" name="prenom[]" value='.$prenom.'><br />';
					 ?>
						

				
			</td><?php } ?>
			

			
				
</tr>

j'ai bien penser mettre une variable $i dans la boucle while et l'augmenter à chaque passage mais ensuite quand $i>10 je sais pas comment lui dire de changer de ligne
si qq'un a une idée....
merci mille fois par avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 janv. 2009, 19:17

Ben quand $i dépasse 10, il faut fermer ta ligne avec un </tr> et éventuellement en ouvrir une nouvelle pour les éléments suivants.... :)

Ce tuto de la FAQ devrait te mettre sur la bonne voie :
Nombre de Colonnes dynamique (opérateur Modulo)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 447 Messages

26 janv. 2009, 19:46

Ça serait pas plus simple en css, tu crées une classe .conteneur dont les proportions te permettent d'en poser 10/ligne, plutôt qu'un td... quant tu dépasses 10 les autres viendront se mettre à la ligne (en mettant "display: inline-block;" à tes conteneurs).

Code : Tout sélectionner

.conteneur { display: inline-block; width: 10%; /* Là tu mets ce qui te convient */ }
<td>
<?php
 
$resultat=mysql_query("SELECT prenom,droits FROM membres WHERE droits = 1") or exit(mysql_error());

while ($donnee = mysql_fetch_array($resultat)){
$nom=$donnee['nom'];
$prenom=$donnee['prenom'];
?>           <span class="conteneur"> 
        <?php echo '<label>'.$prenom.'</label> <input type="checkbox" name="prenom[]" value='.$prenom.'><br />';
                     ?>
                        

                
            </span><?php } ?></td>
Probably (only a) Human Problem?

Eléphanteau du PHP | 35 Messages

27 janv. 2009, 10:53

merci ryle effectivement la logique semble assez simple (des fois on rate les trucs les + simples)... :lol:

stef je me suis pas encore mis au css mais ça va ptêt devenir une excellente occase
merci à vous deux
:wink:

ViPHP
AB
ViPHP | 5818 Messages

27 janv. 2009, 17:03

Alors c'est résolu ?

Sinon toujours en utilisant le système d'affichage de Ryle (cf son lien donné plus haut) j'avais répondu pour une présentation différente dans ce message http://www.phpfrance.com/forums/voir_re ... php#273363

Eléphanteau du PHP | 35 Messages

27 janv. 2009, 17:52

oui c'est résolu
merci AB pour ton lien
j'ai finalement opté pour la solution en css de stef qui me permet en plus d'enjoliver mon tableau
merci à tous pour vos réponse :lol: