JoP Posté 7 Janvier 2007 Partager Posté 7 Janvier 2007 Bonjour... j'explique: je suis capable de faire une boucle while dans un tableau pour afficher des donneés sur une rangée (une donnée différente par rangée), mais je voudrais afficher deux ou plus données sur la même rangée, tout en pouvant faire plusieurs rangées... exemple: supposons que j'entre des noms dans un tableau avec une boucle while... je suis capable de faire ceci: <table> <tr> <td>André</td> </tr> <tr> <td>Roger</td> </tr> etc... </table> pour ca je n'ai pas de problème... mais je voudrais faire ceci: <table> <tr> <td>André</td> <td>Roger</td> </tr> <tr> <td>Michel</td> <td>Valérie</td> </tr> etc... </table> merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
lepidosteus Posté 7 Janvier 2007 Partager Posté 7 Janvier 2007 (modifié) <?php// on remplit un tableau avec des valeurs, toi tu prendra celui où se trouve ton contenu$tab = array();for ($i = 0; $i < 50; $i++) { array_push($tab, 'valeur'.$i);}// nombre d'éléments à afficher par ligne$num = 10;echo '<table><tr>';// on va sortir les éléments en commencant par la fin du tableau, donc on l'inverse ...$tab = array_reverse($tab);// on affiche le contenu (voir doc de array_pop, on enlève la donnée du tableau, donc si tu en a besoin plus loin, faire une copie du tableau, de même les données sont sorties en commencant par la "fin", raison pour laquelle on a fait le reverse au dessus)for ($i = 1; ($var = array_pop($tab)) !== NULL; $i++) { echo '<td>'.$var.'</td>'; // toutes les x données on change de ligne ... if (($i % $num) == 0) { echo '</tr><tr>'; }}// le for a fait une incrémentation de plus que nécéssaire, on l'enlève$i--;// on termine notre tableau pour qu'il soit valide (si par exemple notre dernière ligne n'a que deux éléments alors que notre tableau fait 8 colonnes, on insère 6 éléments vides)while (($i++ % $num) != 0) { echo '<td> </td>';}echo '</tr></table>';?> J'espère que c'est assez clair. Modifié 7 Janvier 2007 par lepidosteus Lien vers le commentaire Partager sur d’autres sites More sharing options...
JoP Posté 7 Janvier 2007 Auteur Partager Posté 7 Janvier 2007 merci je comprend le principe, mais ou dois-je insérer ma requête SQL dans tout ça merci encore... Lien vers le commentaire Partager sur d’autres sites More sharing options...
JoP Posté 8 Janvier 2007 Auteur Partager Posté 8 Janvier 2007 Finalement j'ai trouvé une facon beaucoup plus simple... mais merci quand meme Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 8 Janvier 2007 Partager Posté 8 Janvier 2007 Ca serait sympa que tu la partages Lien vers le commentaire Partager sur d’autres sites More sharing options...
JoP Posté 8 Janvier 2007 Auteur Partager Posté 8 Janvier 2007 Voila pour tout commencer; j'ai ma requête (je crois que ce n'est pas nécéssaire de l'écrire...) echo'<table width=100%><tr>';$i = 0;$limit = 2;while($data = mysql_fetch_assoc($que)) //$que est le résultat de ma requete{echo'<td>'.$data['nom'].'</td>';$i++;if($i == $limit){echo'</tr><tr>';$limit += 2;}}echo'</tr></table>'; c'est tout Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 8 Janvier 2007 Partager Posté 8 Janvier 2007 Un poil plus simple echo'<table width=100%><tr>';$limit = 0;while($data = mysql_fetch_assoc($que)) //$que est le résultat de ma requete{echo'<td>'.$data['nom'].'</td>';$limit ++;if($limit == 2){echo'</tr><tr>';$limit = 0;}}echo'</tr></table>'; Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 8 Janvier 2007 Partager Posté 8 Janvier 2007 Il faudrait aussi l'adapter légèrement pour qu'il puisse générer une cellule vide lorsqu'il a un nombre impair d'images, pour garder un code valide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 8 Janvier 2007 Partager Posté 8 Janvier 2007 Rajouter ceci après : for($i=2 - $limit;$i<=2;$i++){echo "<td></td>"; } Lien vers le commentaire Partager sur d’autres sites More sharing options...
lepidosteus Posté 8 Janvier 2007 Partager Posté 8 Janvier 2007 (modifié) <?php$num = 10; echo '<table><tr>'; for ($i = 1; ($var = mysql_fetch_row($que)) !== false; $i++) { echo '<td>'.$var[0].'</td>'; if (($i % $num) == 0) { echo '</tr><tr>'; } } $i--; while (($i++ % $num) != 0) { echo '<td>&nsbp;</td>'; } echo '</tr></table>'; ?> Une fois les commentaires viré et le faux contenu retiré, je trouve pas vraiment que mon code soit compliqué, m'enfin bon. Modifié 8 Janvier 2007 par lepidosteus Lien vers le commentaire Partager sur d’autres sites More sharing options...
JoP Posté 11 Janvier 2007 Auteur Partager Posté 11 Janvier 2007 lepidosteus... ce n'est pas que ton code est compliqué, je ne le comprenais seulement pas, car je ne suis pas habitué avec les Boucles For... c'est tout.. Et cette idée avec While m'est venu dans un "flash": je l'ai essayé et ça fonctionnait.. Porte koi: est-ce que ce bout de code doit aller avec le code que tu ma posté ou avec celui que j'ai fait merci encore a vous tous Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 11 Janvier 2007 Partager Posté 11 Janvier 2007 Bonjour, Cela correspond à mon code. A toi de l'adapter pour le tiens Portekoi Lien vers le commentaire Partager sur d’autres sites More sharing options...
JoP Posté 11 Janvier 2007 Auteur Partager Posté 11 Janvier 2007 Merci énormément à tout le monde pour votre aide: c'est toujours apprécié... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant