Affichage page par page sans BD

Eléphant du PHP | 65 Messages

16 févr. 2012, 17:03

Bonjour, je dois créer une galerie de photo dynamiquement. J'ai au-delà de 250 images à mettre dans la galerie. Ce que je souhaite faire, c'est que mon code php lise le répertoire au complet puis affiche toutes les images. Cependant, je veux éviter que toutes les images se chargent dans une seule page (c'est beaucoup trop lourd).

Jusqu'à présent, j'avais utilisé un script jQuery, qui fonctionnait super bien, mais beaucoup trop long à charger (il charge les 250 grandes images).

J'ai donc décidé d'utiliser une méthode plus conventionnelle et d'y aller avec plusieurs pages.

J'ai cependant beaucoup de difficulté à y arriver.

Voici mon code :

<?php
                    //S'il n'y a rien comme valeur de début
				if($debut=="")
				{
					//Début est à 0
					$debut=0;
				}
				
				// LEs dossiers dans lesquels les images sont"
				
				$folder = "images/thumbs"; // Dossier des thumbnails
				$folder2 = "images/background"; // Dossier des grandes images
				
				
				// Compter
				$directory = "images/background/";
				if (glob($directory . "*.jpg") != false)
				{
				 $filecount = count(glob($directory . "*.jpg"));
				 echo $filecount;
				}
				else
				{
				 echo 0;
				}
					
				
				// Bombre d'image à afficher par page
				$nombre = 25;
		
				// ON CREE UN INDEX
				$index = $debut * $nombre;
		
				// POUR LES ELEMENTS DU TABLEAU $A COMPRIS ENTRE INDEX ET INDEX +3
				$dossier = opendir($folder);
				while ($Fichier = readdir($dossier)) {
				  
				  if ($Fichier != "." && $Fichier != "..") {
					
					//On assigne le chemin complet, les noms de fichiers sont les mêmes dans les 2 répertoire
					$nomFichier = $folder."/".$Fichier;
					$nomFichier2 = $folder2."/".$Fichier;
					
					//Boucle for pour l'affichage page par page, c'est là que ça bloque je crois.
					for ($i = $index; $i < $index + $nombre && $i < $filecount ; $i++)
					{
							// ON DEFINIT LE NOMBRE
							$num = $a[$i];
							?>
							
								<a href="<?php echo $nomFichier2 ?>" title="">
									<img src="<?php echo $nomFichier ?>" alt="" />
								</a>
							
							<?php
					}
				  }
				}
				closedir($dossier);?>
J'ai pris des codes sur le net en espérant les adapter, mais je m'y perd un peut trop facilement.

Je vous remercie d'avance pour votre aide.

Cordialement
Mieux vaut avoir un humour douteux que de ne pas en avoir du tout!

Eléphant du PHP | 179 Messages

16 févr. 2012, 17:34

 <?php
 $nombre = 15; // nombre de photo
 $debut=$npage-*$nombre // n de la première photo a affichée ( numéro de la page fois le nombre de photo par page ( les pages commencent a 0 dans cet exemple ) )
 while ($Fichier = readdir($dossier) && $i<$debut+$nombre) // ne dépassera pas la dernière photo de la page a afficher
 {
	if($i>=$debut) // ne commencera pas avant la preière photo a afficher
	  if ($Fichier != "." && $Fichier != "..") 
	  {
			$nomFichier = $folder."/".$Fichier;
			$nomFichier2 = $folder2."/".$Fichier;
			?>
			
					<a href="<?php echo $nomFichier2 ?>" title="">
							<img src="<?php echo $nomFichier ?>" alt="" />
					</a>
			
			<?php
	  }
  if ($Fichier != "." && $Fichier != "..") 
     $i++;
}
?>

Essaie un truc du genre..
Ton script ne peut pas marcher pourquoi ?
tu lis une photo et tu veux afficher toutes les photos sur cette lecture
La solution réside en fusionnant tes deux boucles For et While, je te laisse réfléchir si dans l'exemple je l'ai bien fais ;P.