Problème d'affichage de photo avec du texte

cs_Aghianna Messages postés 4 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 4 juin 2006 - 31 mai 2006 à 21:16
cs_Aghianna Messages postés 4 Date d'inscription mercredi 19 avril 2006 Statut Membre Derniè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 :

$i=0;
while($row=mysql_fetch_array($result)){
$id=$row['id_photo'];
$titre=$row['titre'];
$texte=$row['texte'];
$photo1=$row['pte_photo'];
$photo2=$row['gde_photo'];

if ($i==4){
echo '<tr>';
$i=0;
}
echo "<td>$titre


".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

4 réponses

David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
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
0
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
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
0
pastis51forever Messages postés 172 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 8 septembre 2006 1
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;
}

Brice
0
cs_Aghianna Messages postés 4 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 4 juin 2006
4 juin 2006 à 08:54
Je patauge toujours mais merci beaucoup pour votre aide.
0
Rejoignez-nous