Galerie de photo en trois colonnes
Résolu
mont_dani
Messages postés
249
Statut
Membre
-
mont_dani Messages postés 249 Statut Membre -
mont_dani Messages postés 249 Statut Membre -
Bonsoir
Je prépare un mur de photo pour ma web sans utiliser de base de donnée.
J'ai trouver un script qui me conviens presque, surtout que le php et moi nous ne nous connaissons pas très bien.
En effet ce script positionne 4 photos sur une ligne <TD> de la table.
Ce qui fait qu'¡il existe des espaces vides entre deux lignes quand change le format de la photo de portrait a paysage.
Je voudrai savoir si quelqu'un pourrait m'aider pour pouvoir inclure dans le <TD> le nombre d'imge indiqué par $nb_image
Voici mon code
Merci pour votre aide
Je prépare un mur de photo pour ma web sans utiliser de base de donnée.
J'ai trouver un script qui me conviens presque, surtout que le php et moi nous ne nous connaissons pas très bien.
En effet ce script positionne 4 photos sur une ligne <TD> de la table.
Ce qui fait qu'¡il existe des espaces vides entre deux lignes quand change le format de la photo de portrait a paysage.
Je voudrai savoir si quelqu'un pourrait m'aider pour pouvoir inclure dans le <TD> le nombre d'imge indiqué par $nb_image
Voici mon code
<?php
$files = glob("../../image/galeria/11121*.*"); // toute les images qui commence par 11121
$compteur = count($files); // nombre total d image
$nb_colonne=3; // nombre de colonnes a l'affichage
$nb_image= ceil(($compteur) / ($nb_colonne));// nombre d'image par colonne arrondi au sup
?>
<table>
<?php
for ($i = 0; $i < $compteur; $i+=3) { // On augmente de 3 à chaque passage de la boucle et elle tourne tant qu'on a pas atteint le compte
echo '<tr>';
for ($j = $i; $j < ($i + 3); $j++) { // Les quatre prochains fichiers
if (isset($files[$j])) // Vérifie qu'on n'est pas rendu trop loin
echo '<td><img width="200px" src="' . $files[$j] . '" alt="" />
</td>';
}
echo '</tr>';
}
?>
</table>
Merci pour votre aide
6 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
veux-tu utiliser $nb_image, au lieu de 4, pour contrôler le nombre d'images par ligne? -
Bonjour yg_be
Merci pour ton soutien.
Oui se serait mieux d'utiliser $nb_image.
Je suppose qu'il faut faire une boucle ou quelque chose comme ça. -
-
Pourrais-tu exprimer en français "empilé $nb_image photos dans chaque<TD>".
Comment souhaites-tu éviter ces espaces?- Bonjour,
Pour le coup, ça n'a plus rien à voir avec le PHP....
Ce n'est qu'une question de html/css ....
Il faudrait que tu définisses, dans tes TD, une DIV de largeur et longeur fixes et que tu places tes images dans ces DIV ...
Et pour les espacements entre les lignes.. il faut jouer avec le padding et le margin ...
Question à reposer dans le forum webmaster/css si tu ne trouves pas... - Bonsoir Jordane
Je me suis trompé dans le montage que j'ai montré avant. Ce que souhaite faire c'est
Je m'explique de manière différente.
Pour l'intant j'ai
<tr><td>image</td><td>image</td><td>image</td></tr>
<tr><td>image</td><td>image</td><td>image</td></tr>
<tr><td>image</td><td>image</td><td>image</td></tr>
Je voudrai obtenir
<tr><td>image1 image 2 image 3</td><td>image4 image 5 image 6</td><td>image 7 image 8</td></tr>
en faisant quelque chose comme ca dans le php<?php $files = glob("../../image/galeria/11121*.*"); // toute les images qui commence par 11121 $compteur = count($files); // nombre total d image $nb_colonne=3; // nombre de colonnes a l'affichage $nb_image= ceil(($compteur) / ($nb_colonne));// nombre d'image par colonne ?> <table> <?php for ($i = 0; $i < $compteur; $i+=3) { // On augmente de 3 à chaque passage de la boucle et elle tourne tant qu'on a pas atteint le compte echo '<tr>'; for ($j = $i; $j < ($i + 3); $j++) { // Les trois prochains photos if (isset($files[$j])) // Vérifie qu'on n'est pas rendu trop loin echo '<td><img width="200px" border=" 5px solid #89B700" src="' . $files[$j] . '" alt="Image" /><br> <img width="200px" border=" 5px solid #89B700" src="' . $files[$j+1] . '" alt="Image" /><br> <img width="200px" border=" 5px solid #89B700" src="' . $files[$j+2] . '" alt="Image" /><br></td>'; } echo '</tr>'; } ?>
Cela ne fonctionne pas parce que les photos se répètent.
Penses-tu qu'il s'agit toujours d'un problème de css?
-
-
Bonjour
Vous pouvez essayer avec cela UberGallery, sans base de données. Entièrement paramétrable et le PHP est facile à "modifier".
Aperçu "généré" en carré, images portrait ou paysage..
Mais il est préférable d'avoir des images dans la même définition/résolution.
Bien lire la procédure d'installation simple
A+
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonsoir.
.
Me revoivi après avoir chercher pendant deux jours.
Je suis arrivé a cette solution qui fonctionne très bien.
Peut etre il-y a t-il moyen d'alleger le script? je suis ouvert a toutes proposition.
Voici le mein:<?php $files = glob('../../image/galeria/11121*'); // toute les photo qui commence par echo '<table width= "80%" align="center"> <tr> <td>'; echo "<img class='catimage' src='$files[3]'><br> <img class='catimage' src='$files[6]'><br>"; if (isset($files[9])) { echo "<img class='catimage' src='$files[9]'><br>";} if (isset($files[12])) { echo "<img class='catimage' src='$files[12]'><br>";} if (isset($files[15])) { echo "<img class='catimage' src='$files[15]'><br>";} if (isset($files[18])) { echo "<img class='catimage' src='$files[18]'><br>";} if (isset($files[21])) { echo "<img class='catimage' src='$files[21]'><br>";} if (isset($files[24])) { echo "<img class='catimage' src='$files[24]'><br>";} echo '</td> <td>'; echo "<img class='catimage' src='$files[1]'><br> <img class='catimage' src='$files[4]'><br> <img class='catimage' src='$files[7]'><br>"; if (isset($files[10])) { echo "<img class='catimage' src='$files[10]'><br>";} if (isset($files[13])) { echo "<img class='catimage' src='$files[13]'><br>";} if (isset($files[16])) { echo "<img class='catimage' src='$files[16]'><br>";} if (isset($files[19])) { echo "<img class='catimage' src='$files[19]'><br>";} if (isset($files[22])) { echo "<img class='catimage' src='$files[22]'><br>";} echo '</td> <td>'; echo "<img class='catimage' src='$files[2]'><br> <img class='catimage' src='$files[5]'><br> <img class='catimage' src='$files[8]'><br>"; if (isset($files[11])) { echo "<img class='catimage' src='$files[11]'><br>";} if (isset($files[14])) { echo "<img class='catimage' src='$files[14]'><br>";} if (isset($files[17])) { echo "<img class='catimage' src='$files[17]'><br>";} if (isset($files[20])) { echo "<img class='catimage' src='$files[20]'><br>";} if (isset($files[23])) { echo "<img class='catimage' src='$files[23]'><br>";} echo '</td> </tr> </table>'; ?>
En tout cas merci pour votre aide. -
Tiens...
regarde ce que donne ce code :<?php $files = glob('../../image/galeria/11121*'); // toute les photo qui commence par $nb_colonne =3; // nombre de colonnes a l'affichage $nb_imgCel = 3; // Nombre d'images par cellule //variable utilisées pour recréer un array organisé comme tu le souhaites $arrF = []; $row = 0; $col = 0; $K = 0; //on boucle sur chaque fichier : foreach($files as $F){ if($col>0 && $col % ($nb_colonne-1) == 0 && $K>=$nb_imgCel){ $col=0; $K=0; $row++; } if($K>0 && $K % $nb_imgCel == 0){ $col++; $K=0; } $arrF[$row][$col][] = $F; $K++; } //pour voir à quoi ressemble l'array echo "<pre>"; print_r($arrF); echo "</pre>"; exit;
ne te reste plus qu'à boucler dessus pour recréer le tableau html que tu veux obtenir

