djilou Posté 9 Octobre 2007 Partager Posté 9 Octobre 2007 Bonjour J'ai un script qui récupère des photos depuis une base de donnée pour les afficher ensuite sur une page web function showPhotos($cat,$page,$end){ global $database,$ds_cats2,$ds_cats5,$SETTINGS; $start = $page * $end - ($end); $data = ''; $query = mysql_query("SELECT * FROM ".$database['prefix']."Photos". WHERE cat = \''.$cat.'\'' )." ORDER BY name LIMIT $start,$end ") while ($PHOTO = mysql_fetch_object($query)) { $data .= '<td align="center"><img src="'.cleanData($PHOTO->pic1).'" height="100" width="90" alt="'.cleanData($PHOTO->name).'" title="'.cleanData($PHOTO->name).'"> <br /><span class="album"><a href="' 'index.php?cmd=PHOTO&cat='.$PHOTO->cat.'&PHOTO='.$PHOTO->id).'" title="'.cleanData($PHOTO->name).'">'.cleanData($PHOTO->name).'</a></span>'.($PHOTO->submitted_by ? '<br> '.$ds_cats2.' '.cleanData($PHOTO->submitted_by) : '').'</td>'; } $data .= '<br>'; return mysql_num_rows($query)>0 ? $data : '<br>';} Les photos sont affichées à l'aide du template: <table cellpadding="4" cellspacing="1" border="0" width="100%"><tr> <?php echo $this->PHOTOS; ?></tr></table> Ce script m'affiche toutes les photos sur une seule ligne, ce que je veux c'est afficher 5 photos sur chaque ligne. Comment je dois m'y prendre? Merci par avance de votre aide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
oxerrois Posté 9 Octobre 2007 Partager Posté 9 Octobre 2007 (modifié) En mettant les <tr> dans $data ça devrait être bon Modifié 9 Octobre 2007 par captain_torche Inutile de citer le message précédent (surtout quand il est si long); on vient de le lire (captain_torche, modérateur) Lien vers le commentaire Partager sur d’autres sites More sharing options...
djilou Posté 9 Octobre 2007 Auteur Partager Posté 9 Octobre 2007 (modifié) Merci mais ça me donne uniquement une seule photo par ligne, je cherche plutot à avoir 5 photos par ligne, j'ai pensé à un truc du genre $a = 0; if ($a == 0) { echo "<tr>"; } $a++;echo "<td>"; Mon codeecho " </td>"; if ($a == 5) { echo "</tr>"; $a = 0; } mais je n'arrive pas à l'intégrer dans mon script Modifié 9 Octobre 2007 par djilou Lien vers le commentaire Partager sur d’autres sites More sharing options...
oxerrois Posté 10 Octobre 2007 Partager Posté 10 Octobre 2007 (modifié) Ah excuse moi j'avais mal compris. Pour l'instant je n'ai pas trop d'idée pour ton prbleme Je vais reflechir Pierre Edit : Petite idée mais absolument pas sur, en mettant : td { width:20%; } Dans le CSS ? Modifié 10 Octobre 2007 par oxerrois Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 10 Octobre 2007 Partager Posté 10 Octobre 2007 La largeur en CSS ne marchera pas, puisqu'avec un tableau il faut obligatoirement qu'il y ait une nouvelle ligne de spécifiée. djilou, ton code devrait marcher, mais il faut le mettre au bon endroit : la première déclaration de $a avant la boucle while, et le reste entourant le contenu de ladite boucle. Il faudra bien sûr supprimer les anciens <tr> de ton code. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 10 Octobre 2007 Partager Posté 10 Octobre 2007 Mets le "$a++;" après le if ($a == 5) { echo "</tr>"; $a = 0; } Et le $a = 0; avant le while Lien vers le commentaire Partager sur d’autres sites More sharing options...
djilou Posté 10 Octobre 2007 Auteur Partager Posté 10 Octobre 2007 Merci à vous mais aucune de vos solutions fonctionne Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 10 Octobre 2007 Partager Posté 10 Octobre 2007 Salut, Tu ne nous aides pas beaucoup Mets ton code ici pour que l'on puisse le voir et corriger Portekoi PS: Si c'est un long code, utilise [codeBOX ] [/codeBOX ] Lien vers le commentaire Partager sur d’autres sites More sharing options...
djilou Posté 10 Octobre 2007 Auteur Partager Posté 10 Octobre 2007 (modifié) Je ne vois pas comment je peux l'inserer dans la boucle while vu que c'est le résultat de la variable $data qui est affiché dans le template donc si je mets le <tr> avant le while il ne serait pas pris en compte dans le template $a = 0; if ($a == 0) { echo "<tr>"; } $a++;while ($PHOTO = mysql_fetch_object($query)) { $data .= '<td align="center"><img src="'.cleanData($PHOTO->pic1).'" height="100" width="90" alt="'.cleanData($PHOTO->name).'" title="'.cleanData($PHOTO->name).'"> <br /><span class="album"><a href="' 'index.php?cmd=PHOTO&cat='.$PHOTO->cat.'&PHOTO='.$PHOTO->id).'" title="'.cleanData($PHOTO->name).'">'.cleanData($PHOTO->name).'</a></span>'.($PHOTO->submitted_by ? '<br> '.$ds_cats2.' '.cleanData($PHOTO->submitted_by) : '').'</td>'; }if ($a == 5) { echo "</tr>"; $a = 0; } j'ai essayé directement dans le template mais ça ne donne rien <table cellpadding="4" cellspacing="1" border="0" width="100%"><?php $a = 0;if ($a == 0) { echo "<tr>"; } $a++; echo $this->PHOTOS; if ($a == 0) { echo "</tr>"; $a = 0; } ?></table> Modifié 10 Octobre 2007 par Portekoi Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 10 Octobre 2007 Partager Posté 10 Octobre 2007 Si on te dit de le mettre dans le while, c'est dans le while qu'il faut le mettre Essaie ca : $a = 0;while ($PHOTO = mysql_fetch_object($query)) { if ($a == 0) { echo "<tr>"; } $data .= '<td align="center"><img src="'.cleanData($PHOTO->pic1).'" height="100" width="90" alt="'.cleanData($PHOTO->name).'" title="'.cleanData($PHOTO->name).'"> <br /><span class="album"><a href="' 'index.php?cmd=PHOTO&cat='.$PHOTO->cat.'&PHOTO='.$PHOTO->id).'" title="'.cleanData($PHOTO->name).'">'.cleanData($PHOTO->name).'</a></span>'.($PHOTO->submitted_by ? '<br> '.$ds_cats2.' '.cleanData($PHOTO->submitted_by) : '').'</td>';if ($a == 5) { echo "</tr>"; $a = 0; }$a++; } Lien vers le commentaire Partager sur d’autres sites More sharing options...
djilou Posté 11 Octobre 2007 Auteur Partager Posté 11 Octobre 2007 (modifié) Comme je l'ai dis c'est le résultat de la variable $data qui est affiché dans le template donc avec ton code le <tr> </tr> ne sont pas pris en compte, dans le code source de la page je n'ai que les <td> </td> Voila comment est afficher le résultat d'abord on a ce bout de code : $tpl_category->assign('PHOTOS', showPhotos($cat,$page)); puis dans le template : <table cellpadding="4" cellspacing="1" border="0" width="100%"> <tr> <?php echo $this->PHOTOS; ?></tr></table> Modifié 11 Octobre 2007 par djilou Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 11 Octobre 2007 Partager Posté 11 Octobre 2007 Je vois ne pas où est le problème. Tu enlèves de la templates les tr et tu les mets dans ton while. Lien vers le commentaire Partager sur d’autres sites More sharing options...
djilou Posté 11 Octobre 2007 Auteur Partager Posté 11 Octobre 2007 oui c'est ce que j'ai fais, mais le <tr> n'est pas pris en compte je ne le vois pas quand j'affiche le code source de ma page Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 11 Octobre 2007 Partager Posté 11 Octobre 2007 Imposible. Si le TD apparait, le TR apparaitra forcément. Lien vers le commentaire Partager sur d’autres sites More sharing options...
djilou Posté 11 Octobre 2007 Auteur Partager Posté 11 Octobre 2007 ça y est ça marche avec ce code $a = 0; while ($PHOTO = mysql_fetch_object($query)) { if ($a == 0) {$data .= '<tr>';}$a++; $data .= '<td align="center"><img src="'.cleanData($PHOTO->pic1).'" height="100" width="90" alt="'.cleanData($PHOTO->name).'" title="'.cleanData($PHOTO->name).'"> <br /><span class="album"><a href="' 'index.php?cmd=PHOTO&cat='.$PHOTO->cat.'&PHOTO='.$PHOTO->id).'" title="'.cleanData($PHOTO->name).'">'.cleanData($PHOTO->name).'</a></span>'.($PHOTO->submitted_by ? '<br> '.$ds_cats2.' '.cleanData($PHOTO->submitted_by) : '').'</td>'; if ($a == 4) { $data .= '</tr>'; $a = 0; } } Merci bcp de votre patiente et de votre aide 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