Galerie de photo en trois colonnes

Résolu/Fermé
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - 31 oct. 2021 à 19:39
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - 3 nov. 2021 à 12:04
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

<?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 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 Ambassadeur 1 552
31 oct. 2021 à 21:34
bonjour,
veux-tu utiliser $nb_image, au lieu de 4, pour contrôler le nombre d'images par ligne?
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
1 nov. 2021 à 06:52
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.
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552
1 nov. 2021 à 09:48
tu écris "ce script positionne 4 photos sur une ligne". en es-tu certain?
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 > yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024
1 nov. 2021 à 12:05
Oups, tu as raison le srcipt que j'ai posté met trois photos sur chaque ligne.
J'ai fait plusieurs essais et a la fin je me suis trompée dans mon texte.
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552 > mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
1 nov. 2021 à 12:42
et donc ce script fonctionne comme tu le souhaites, non?
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
1 nov. 2021 à 12:54
Le script fonctionne mais pas comme je veux.
Quand il met 3 ou 4 photos par ligne, il y a les espaces causés par la difference entre format portarit et paysage.
voici le résultat:


Je veux éviter les espaces balncs.

C'est pourquoi j'ai pensé empilé $nb_image photos dans chaque<TD>
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552
1 nov. 2021 à 13:30
Pourrais-tu exprimer en français "empilé $nb_image photos dans chaque<TD>".
Comment souhaites-tu éviter ces espaces?
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 > yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024
1 nov. 2021 à 15:53
Pourrais-tu exprimer en français "empilé $nb_image photos dans chaque<TD>".==>>
Mieux vaut une photo que beaucoup de paroles.
Ce que j'ai aujourd hui tu l'as vu dans le message précédent
Ce que je souhaite obtenir


Comment souhaites-tu éviter ces espaces? ===>>> ca c'est ma question
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
1 nov. 2021 à 16:01
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...
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 > jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024
1 nov. 2021 à 16:57
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?
0
Utilisateur anonyme
1 nov. 2021 à 13:15
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
2 nov. 2021 à 19:39
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.
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552
3 nov. 2021 à 07:51
Tu pourrais travailler avec des boucles, comme tu as fait au départ.
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 > yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024
3 nov. 2021 à 09:04
J'ai essayé, mais je n'y suis pas arrivé. Aurais-tu une idée?
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552 > mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
3 nov. 2021 à 10:50
qu'as-tu essayé?
tu dois produire trois listes:
1,4,7,...
2,5,8, ...
3,6,9,12, ...
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
3 nov. 2021 à 09:55
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
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
3 nov. 2021 à 12:04
Merci Jordane.

La présentation de l'array me parait parfaite.

Je vois comment le boucler dans mon tableau html
0