Selection photos à afficher

Eléphant du PHP | 424 Messages

19 avr. 2009, 19:53

Bonsoir tout le monde.
J'utilise ceci pour afficher aléatoirement mes photos.
<?php $path='Photos/content/Saison 2008-2009/PHOTOS DES EQUIPES/';
					$handle=opendir($path);
$count=0;
while ($file = readdir($handle)){
       if (($file != ".") && ($file != "..")) {
            $count++;
       }
}

$alea=rand(1,$count);
rewinddir($handle);
$count=0;

while ($file = readdir($handle)){
       if (($file != ".") && ($file != "..")) {
            $count++;
            if ($count==$alea) {
			$lienphoto = $path;
              echo "<a href=\"$path$file\" target=_blank><img src=\"$path$file\" height=\"80\" title=\"$file\" border=\"0\"></a>";
                break;
                }
       }
}
closedir($handle);  ?>
2 problèmes se posent à moi :

1. Comment afficher le contenu d'un dossier qui lui contient un dossier qui contient des photos ?
2. Je ne veux pas afficher les miniatures contenu dans mon dossier, en fait je ne veux pas afficher les photos commençant par tn_

Merci pour votre aide.
Youpi Youpi Yo !

Mammouth du PHP | 693 Messages

19 avr. 2009, 20:20

Tu peux tester si ce que donne reddir() est un fichier ou non. Si ca n'en est pas, tu l'ouvre et tu le lit et ainsi de suite. Le mieux est de coder une fonction récursive (c'est à dire qu'elle s'appelle elle même)

Tu peux facilemnt voir si ton fichier commence par ce que tu veux grace à la fonction substr()

Eléphant du PHP | 424 Messages

21 avr. 2009, 22:45

aprés avoir testé readdir est du texte et nottament le nom de la photo.

Je ne trouve vraiment pas la solution....... a l'aiiiiiiiiiiiiiiide
Youpi Youpi Yo !

D4Y
Eléphant du PHP | 52 Messages

21 avr. 2009, 23:03

Voici un code que j'utilise pour afficher mes miniatures contenue dans le dossier :
"preg_match" ca devrait te guider sur la voie ..
$dossier = opendir($folder);
					while ($Fichier = readdir($dossier))
						{
							if ($Fichier != "." && $Fichier != "..")
							{
							
								$nomFichier = $Fichier;
								preg_match("#(.*)_thumb.(JPG|jpg)#", $nomFichier, $matches);
							if($matches[1])
								{
								$thumb = $folder."/".$matches[1]."_thumb.".$matches[2]."";
								$large = $folder."/".$matches[1].".".$matches[2]."";
								$photos .=  "<a href=\"".$large."\" rel=\"lightbox[ref]\"><img src=\"".$thumb."\" hspace=\"0\" vspace=\"10\" border=\"0\"/></a><br>";
								}
								
							}
						}
					closedir($dossier);

Mammouth du PHP | 661 Messages

21 avr. 2009, 23:10

salut :

pour le premier point, je te conseillerais une fonction récursive pour implémenter ta table,

tu part du dossier en lançant la fonction, celle-ci liste le dossier et ajoute toutes les images dans une table, si elle trouve un dossier, elle appelle une nouvelle fonction (elle meme) avec en parametre le dossier trouvé ... sans fin ! et liste ainsi tous les fichiers !!

pour ce qui est du point 2, pour vérifier que l'on ne prend pas en compte les nom commançant par "tn_", il te suffit de vérifier avec strpos() au cas ou il soit présent (vérifié avec ereg() )
if (strpos('tn_', $nomImg) != false || ! ereg('tn_', $nomImg)) { ...} // enfin, dans le genre ;)
@+

Eléphant du PHP | 424 Messages

21 avr. 2009, 23:35

Merci pour vos réponses qui vont surement m'aider.

Par contre D4Y dans ton code à quoi correspond $folder ?
J'ai essayé de mettre le lien qui pointe vers les dossiers contenant mes images mais j'ai l'erreur :

Notice: Undefined offset: 1 in D:\EasyPHP 2.0b1\www\CAGNES BASKET\indexK.php on line 195

sachant que la ligne 195 correspond au code :
 if($matches[1]) 
Merci pour vos aides
Youpi Youpi Yo !

D4Y
Eléphant du PHP | 52 Messages

22 avr. 2009, 06:46

folder correspond à $folder = "photos/album1"; par exemple
Les photos se trouvant dans album1 .

Eléphant du PHP | 424 Messages

22 avr. 2009, 13:27

Non toujours la même erreur.
Notice: Undefined offset: 1 in C:\Program Files\EasyPHP 3.0\www\CAGNES BASKET\indexK.php on line 192
Mais avec ton code j'affiche uniquement les photos contenu dans un dossier, alors que je veux afficher des photos contenus dans plusieurs dossiers.

C'est bien ca ?
Youpi Youpi Yo !

D4Y
Eléphant du PHP | 52 Messages

22 avr. 2009, 13:40

oui effectivement mais il te suffit de faire une boucle ;)

D4Y
Eléphant du PHP | 52 Messages

22 avr. 2009, 13:56

Sinon , j'ai trouvé cette fonction qui pourrait t'aider :
 <?
 function ParcourirDossier($LienRepertoir,$extentionRecherchee="",$tableauDeFichier=false)
{
$extention=str_replace(".","\.",$extentionRecherchee);
 if(!$tableauDeFichier)
 {
$tableauDeFichier[0]='';
 }
 if(is_dir($LienRepertoir))
 {
$ClassDir= dir($LienRepertoir);
     while(($nomFichier=$ClassDir->read())!=false)
     {
     if($nomFichier=='.'||$nomFichier=='..')
     {
     continue;
     }
     elseif(is_dir($LienRepertoir."/".$nomFichier))
     {
     //si vous enlevez se commentaire vous aurez le nom des dossiers en plus
     //array_push($tableauDeFichier,$LienRepertoir."/".$nomFichier);
     $tableauDeFichier= ParcourirDossier($LienRepertoir."/".$nomFichier,$extentionRecherchee,$tableauDeFichier);
     }
     elseif(ereg(".*$extention$",$nomFichier))
     {
     If($tableauDeFichier[0]=='')
     {
     $tableauDeFichier[0]=$LienRepertoir."/".$nomFichier;
     }
     else
     {
     array_push($tableauDeFichier,$LienRepertoir."/".$nomFichier);
     }
     }
     }
     return $tableauDeFichier;
     }
     else
     {
     echo "Erreur";
     return false;
     }
     }
     /**
    * * Exemple pour inclure tous les fichiers *.inc.php du répertoire include/function
    * * si il y a des répertoires dans le dossier include/function il ira les parcourir et de même si il y a des répertoires dans le répertoire ,...
    * * si vous mettez rien à la place de .inc.php il inclura tous les fichiers
    * */
     $tableFichier = ParcourirDossier("include/function",".inc.php");
     foreach($tableFichier as $lienFichier)
     {
     include($lienFichier);
     }
     ?>