cs_Aghianna
Messages postés4Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 4 juin 2006
-
31 mai 2006 à 21:16
cs_Aghianna
Messages postés4Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 4 juin 2006
-
4 juin 2006 à 08:54
Bonsoir
Je dois afficher une sorte de galerie de photo issue d'une base de données.
Il doit y avoir 4 images par ligne avec un titre puis du texte en dessous. Le problème est que j'ai construit un tableau avec du php et que toutes les variables à afficher se retrouvent juste séprarer par des balises
. Et bien évidemment si le texte en dessous fait 4 lignes, et que pour la photo suivante il ne fait que 2 lignes, il y a un décalage dans l'affichage puisque cela s'ajuste dans la cellule du tableau et bien sûr ce n'est pas bien beau :
voici la partie du script qui dit d'afficher les résultats dans le tableau :
".nl2br($texte)."</td>";
if ($i==4){
echo '</tr>';
$i=0;
}
$i++;
}
Il faudrait que le tableau ressemble à par exemple :
<tr><td>$titre</td></tr>
<tr><td></td></tr>
<tr><td><$texte</td></tr> en html ça va, mais il faut du php et alors où placer
le compteur qui indique 4 par ligne ?
Je suis débutante en php et je patauge ....
Merci d'avance pour votre aide
David_monchy
Messages postés214Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention23 juin 20061 1 juin 2006 à 10:03
Salut,
tout d'abord, il faudrait que tu stockes tes résultats dans des tableaux
grâce à cela, tu va pouvoir avoir accès à tous les éléments comme ceci: $titre_de_la_photo=$titre[$i]
tu fais un mysql_num_rows pour savoir combien tu as de résultats, et tu divise le résultat par 4 pour savoir combien tu as de lignes. tu stockes ce nombre dans $nb_lignes_total
ensuite, tu fais:
<?php
$j=0;
for($j=0;$j<$nb_lignes_total;$j++){
$i=0;
echo '<tr>';
for($i=0;$i<4;$i++){
echo '<td>'.$titre[$i].'
</td>';
}
echo '</tr>';
}
?>
Je pense que cela devrait fonctionner, bien qu'en ce moment je m'aperçois que je fais des erreurs énormes (tester un paramètre GET alors que la méthode du formulaire était POST par exemple...)
Essaye déjà cela et dis moi si cela correspond à tes attentes
Bonne journée
David
David_monchy
Messages postés214Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention23 juin 20061 1 juin 2006 à 10:13
euh nan laisse tomber parce que avec mon code tu aura tout le temps les 4 premières photos (le $i ne va pas au-dessus de 4). Je pense que tu peux résoudre cela en mettant le $i=0 en dehors de la première boucle for (après $j=0;). Par contre après il faudrait que tu modifies la condition de la boucle du second for... Je t'avouerais qu'en ce moment je n'ai pas beaucoup de temps, mais dès que j'en aurais, j'y regarderai de plus près.
En tout cas, tu as la base initiale de l'algo, je pense.
Bonne journée
David
pastis51forever
Messages postés172Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention 8 septembre 20061 1 juin 2006 à 13:52
Bonjour!
Je n'ai pas completement détaillé ton problème, mais y'a quelque chose qui me parait bizarre:
Avec ton code, je pense que le html créé ne doit jamais contenir la balise fermante </tr> non?
Si c'est le cas, comme je le pense, supprime la première réinitialisation de $i comme ca:
if ($i==4){
echo '<tr>';
}
En effet, vu que tu réinitialise $i à 0 en début de boucle, tu ne valide jamais la 2eme condition $i==4, donc tu ne passes jamais par
{
echo '</tr>';
$i=0;
}