Smiley biggrin bonsoir
j'ai plusieurs petit problèmes avec le script et comme ici les codeurs sont plutôt du genre balaise je me lance:

Suite au mariage de mon meilleur pote, j'essaie de réaliser un site sur lequel les participants au mariage pourront laisser les photos prises.

les images sont uploadés dans le fichier upload à la racine du site.

Mon code fonctionne bien jusqu'à : "je vais alors afficher les images"
*j'ai 17 photos dans le fichier upload
*le nombre de page est bien calculé
* je veux placer 3 images par pages et c'est là que je coince. (les 17 sont listés en permanence sur chaque page au lieu de 3) et ces dernières ne s'affichent pas.

Voici mon code
 
<?php
{
?>
<div id="conteneur">
<?php

$dossier=Opendir($adresse);
$adresse="./upload/"; //Adresse du dossier sans oublier le / à la fin.
 

function GetFileList( $dirname="./upload/" ) 
{   
   $files = array(); 
   $dir = opendir( $dirname );
   while($file = readdir($dir)) {
      if (ereg("jpg$",$file) || ereg("JPG$",$file) || 
          ereg("jpeg$",$file) || ereg("JPEG$",$file) ||
          ereg("png$",$file) || ereg("PNG$",$file) ||
	  ereg("gif$",$file) || ereg("GIF$",$file)
	  ) {
          $files[] = $file; 
      }
   }
   sort($files);
   return $files;
}

//je met dans une variable le nombre d'images que l'on veut par page
$nombreImagesAfficheesParPage = 3;
//je liste les images grace à la fonction créé GetFileList
$imagelist = GetFileList($adresse);
//je peux maintenant compter le nombre d'images dans le fichier
$nombreTotalImage = count($imagelist);
//on écrit le nombre d'images existantes
echo 'il y a ' . $nombreTotalImage . ' images <br />';

//je calcule maintenant le nombre de pages à créer
$nombreDePages = ceil($nombreTotalImage / $nombreImagesAfficheesParPage);
//je fait une boucle pour écrire les liens vers chacune des pages
echo 'Page: ';
for($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="index.php?page=' . $i . '">' . $i . ' </a>';
}
echo '<br />';
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//JE VAIS ALORS AFFICHER LES IMAGES
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////

if (isset($_GET['page']))
{
		$page = $_GET['page'];// On récupère le numéro de la page indiqué dans l'adresse (index.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page 
{
		$page = 1; // On se met sur la page 1 (par défaut)
}

 
$dossier=Opendir($adresse); //Ouverture du dossier.     
echo '<div id="galerie">
<ul id="galerie_mini">';
while ($Fichier = readdir($dossier)) //On affiche les fichiers les uns après les autres.

{
	 if ($Fichier != "." && $Fichier != "..") // Filtre anti-point ! 
     {
     //Maintenant, on affiche les fichiers sous forme de liens vers les fichiers 
     ?>

		<li><a href="<?php echo "$adresse $Fichier" ?>" title="Titre de la photo 1"><img src="<?php echo "$adresse $Fichier" ?>" alt="<?php echo "$Fichier" ?>" /></a></li>


	 <?php
	 }
}
closedir($dossier);
?> 
	 </ul>

	
	<dl id="photo">
		<dt>Titre de la photo 1</dt>
		<dd><img id="big_pict" src="<?php echo "$adresse $Fichier" ?>" alt="<?php echo "$Fichier" ?> en taille normale" /></dd>
	</dl>
</div>

  	</div>	
	<div id="footer">
</div>
<?php
}
?>

upload/11920-rendu.png

Merci d'avance de l'attention que vous porterez à mon problème.
Salut,

tu pourrais essayer quelque chose comme :
<div id="conteneur">
<?php
$adresse="./upload/"; //Adresse du dossier sans oublier le / à la fin.
//je mets dans une variable le nombre d'images que l'on veut par page
$nombreImagesAfficheesParPage = 3;

$page = !empty($_GET['page']) ? intval($_GET['page']) : 1;
if ($page == 0) { $page = 1; }

$dossier = @opendir($adresse); //Ouverture du dossier.     
if ($dossier) {
	$num_image = 0;
	$image_max = $page * $nombreImagesAfficheesParPage;
	$array_img = array();
	$ext_valid = array(".jpg", ".jpeg", ".gif", ".png");	// liste des extensions valides
	
	while ($Fichier = readdir($dossier)) {	//On affiche les fichiers les uns après les autres.
		$image = $adresse.$Fichier;		// Chemin vers l'image
		$extension = substr($image, strrpos($image, "."));
		if (in_array(strtolower($extension), $ext_valid)) {		// Vérif extension
			$num_image ++;
			if (($num_image > ($image_max - $nombreImagesAfficheesParPage)) && ($num_image <= $image_max)) {
			$array_img[$Fichier] = $image;		// Alimentation tableau images
			}
		}
	}
	closedir($dossier);
	
	echo '<p>il y a ' . $num_image . ' images</p>'."\n";
	
	//je calcule maintenant le nombre de pages à créer
	$nombreDePages = ceil($num_image / $nombreImagesAfficheesParPage);
	
	//je fais une boucle pour écrire les liens vers chacune des pages
	echo '<p>Page: ';
	for($i = 1 ; $i <= $nombreDePages ; $i++) {
		if ($i == $page) {
			echo $i.' ';
		} else {
			echo '<a href="?page=' . $i . '">' . $i . '</a> ';
		}
	}
	echo '</p>'."\n".'<div id="galerie">'."\n\t".'<ul id="galerie_mini">'."\n";
	$big_img = '';
	$big_alt = '';
	foreach($array_img as $id => $val) {
		if ($big_img == '') { 
			$big_img = $val; 
			$big_alt = $id;
		}
		echo "\t\t".'<li><a href="'.$val.'" title="'.$id.'"><img src="'.$val.'" alt="'.$id.'" /></a></li>'."\n";
	}
	?>
</ul>
		<dl id="photo">
			<dt><?php echo $big_alt; ?></dt>
			<dd><img id="big_pict" src="<?php echo $big_img; ?>" alt="<?php echo $big_alt; ?>" /></dd>
		</dl>
</div>
<?php
}
?>
</div>

A+ Smiley cligne
Modifié par Heyoan (03 Jul 2008 - 04:31)
Merci beaucoup
tu m'enlèves une super grosse épine du pied et puis ça marche super bien.

Serait il possible d'abuser de ta gentillesse.

Tu dois certainement connaître une astuce qui permettrait de redimensionner les photos affichées dans la partie <ul id="galerie_mini"></ul>
Si possible sans avoir à créer un deuxième dossier ça il va y avoir beaucoup de photos et mon hébergeur (toutes les fonctions sont possible pas de safemode.... c'est un petit hébergeur qui à presque tout d'un grand hormis l'espace de stockage mais je ne m'en plein pas) me laisse seulement 500M.

Peux tu me dire si tu connais l'astuce comment l'appliquer .

EDIT: en fouillant un peu sur votre excellent site j'ai trouvé cette solution je rajoute width="90px" et height ="90px"
dans :


Merci d'avance.
<li><a href="'.$val.'" title="'.$id.'"><img src="'.$val.'" alt="'.$id.'" width="90px" height="90px"/></a></li>
et ça me fait de jolies petites vignettes.

Quand pensez vous?
Modifié par mister magoo2 (03 Jul 2008 - 11:21)
Salut,

et bien je suppose que tu limites la taille des images uploadées et comme tu n'en affiches que 3 par pages cette solution devrait faire l'affaire.

Cela dit, il serait quand même plus propre de générer directement une miniature dans un autre répertoire en même temps que tu fais ton move_uploaded_file : il y a un petit exemple dans ce sujet.
En effet, il faut savoir que cette technique d'affichage ne limite pas le poids des images et tes 3 miniatures peuvent tout de même peser 300 ko Smiley cligne !

A noter également que si tu comptes avoir beaucoup d'images il vaudrait mieux alimenter une table mysql car le readdir va finir par prendre énormément de ressources pour rien.
Modifié par Heyoan (03 Jul 2008 - 13:39)
Encore une fois merci,

En fait je ne voulais pas restreindre la taille des photos pour ne pas perdre en qualité si les mariés veulent les imprimer par la suite.

du coup étant un peu léger niveau place sur le disque je me suis dit ben pourquoi je n'utiliserai pas l'espace de stockage d'un autre site. j'ai tenté en mettant le lien vers le site dans la variable adresse mais il ne se passe rien
$adresse="http://www.monsite.com/upload/";

j'ai pas mis l'adresse exact de l'autre site pour pas faire de pub

As-tu une idée ou peux tu m'expliquer pourquoi ça ne marche pas de cette façon? je sais je fais le Smiley boulet mais j'ai appris sur la tas alors il y a des trucs que je ne sais pas Smiley confused
Modifié par mister magoo2 (03 Jul 2008 - 17:43)