Gérer une galerie d'images (avec un modulo ?)

Eléphanteau du PHP | 15 Messages

05 févr. 2009, 20:14

Bonjour,

Je me remets à l'ouvrage après quelques jours d'interruption.

A présent je voudrai que Php m'aide à aligner les images, car le problème semble insoluble en recourant uniquement aux feuilles de style.

On va dire que mon conteneur mesure 450 pixels et que chaque image mesure 150 pixels. Mes images s'affichent donc sur trois colonnes. En revanche, si j'ai 5 images (3 +2) (je ne connais pas à l'avance ce nombre !), les deux restantes vont s'aligner à gauche, en raison du float de la feuille de style. Or, je voudrai que ces deux soient centrées. Si j'en ai 4 (3+1), je voudrai que la dernière soit centrée.

Ainsi puis-je distinguer trois cas :
- les images multiples de 3 s'affichent avec le style "gallery_a" ;
- les images restantes éventuelles, au nombre de 2, s'affichent avec le style "gallery_b";
- l'image restante éventuelle, au nombre de 1, s'affiche avec le style "gallery_c"

J'ai commencé par écrire :
$modulo = $result % 3;
$print modulo;
en me disant que le début de solution devait être là !

A présent, je ne sais pas comment gérer le résultat pour le transformer en affichage.

Le début du code original (qui fonctionnait) pour afficher la galerie était le suivant :
foreach($gallery as $tmpbc)
{
... // Début d'instructions de traitement
echo '<dl class="gallery">';
... // Fin d'instructions de traitement
}
J'ai essayé d'écrire trois boucles avec while qui ne fonctionnent pas :
while ($modulo == 1)
{
echo '<dl class="gallery_a">';
}
while ($modulo == 2)
{
echo '<dl class="gallery_b">';
}
while ($modulo == 3)
{
echo '<dl class="gallery_c">';
}
sans résultat.

J'ai aussi testé avec for en initialisant un compteur, mais sans plus de résultat... Sans parler d'essais malheureux avec des boucles... infinies !

La difficulté est, je crois, d'afficher "gallery_a" (tant qu'il y a 3 images) puis "gallery_b" ou "gallery_c".

Merci pour votre aide, en espérant ne pas avoir été confus.

Cordialement,

V.

ViPHP
ViPHP | 1136 Messages

05 févr. 2009, 20:20

Salut,

le modulo , c'est bien , mais là tu n'en a pas besoin , car tu n'utilise pas les tableaux ..

Sinon , avec le CSS , il te suffit de définir le "conteneur" de tes images à une taille fixe "450px" , puis mettre tes div dedans eux aussi en taille fixe , mais en position float ..
Ainsi , dés que la taille cote à cote dépasse 450px , il passe à la ligne suivante ..

C'est ce que tu souhaites ? j'espère avoir été clair .. c'est toujours plus facile à faire qu'à dire le CSS .. :)

Eléphanteau du PHP | 15 Messages

05 févr. 2009, 20:57

Bonsoir,

J'ai dû mal à saisir ta réponse... "Uniquement les tableaux" ? Pourtant, je me sers déjà d'un modulo pour distinguer les colonnes de gauche et de droite sur une page de mon site. (Là c'est plus simple, impair ou pair !).

Dans la solution que tu préconises, la quatrième image sera repoussée à gauche sur la ligne suivante, et je veux la centrer ! :lol:

Merci pour ton aide.

Bien à toi,

V.

ViPHP
ViPHP | 1136 Messages

05 févr. 2009, 21:27

Arf ..

Oui dans ce cas ...
tu es sur de vouloir centrer les images dont le nombre est inférieur à 3 :roll: ...

Désolé de ne pouvoir plus t'aider sur ce coup là

Eléphanteau du PHP | 15 Messages

05 févr. 2009, 22:12

Ne sois pas désolé, merci de ton assistance!

Cordialement,

V.