nico_papy Posté 25 Novembre 2006 Posté 25 Novembre 2006 salut a tous ! voila, j'ai fais un script qui permet d'afficher toutes les photos que contient un dossier. voici le script : <?php //On indique le dossier images $chem_img = "./images/$rep"; //On ouvre le dossier images $handle = opendir($chem_img); $j = 0; //On parcoure chaque élément du dossier while ($file = readdir($handle)) { //Si les fichiers ne sont pas des images if(preg_match ("!(\.jpg|\.jpeg|\.gif|\.bmp|\.png)$!i", $file)) { $listef[] = $file; $j++; } } $k=0; for($i=0; $i < $j; $i++) { $k++; //On calcule la largeur et la hauteur de l'image aléatoire $size = getimagesize($chem_img."/".$listef[$i]); //Largeur maximale de l'image pour la création des miniatures $largeur_maxi = 50; //Si la largeur dépasse la limite autorisée... if ($size[0] > $largeur_maxi) { //...la nouvelle largeur est égale à la limite à ne pas dépasser $width = $largeur_maxi; //La largeur d'origine divisée par la largeur limitée (on obtient un chiffre qui sert à faire la même proportion pour la hauteur) $theight = ($size[0]/$largeur_maxi); //La hauteur originale est divisée par le chiffre obtenu précédemment afin que l'image conserve les mêmes proportions que l'originale (mais en mode vignette) $height = ($size[1]/$theight); } else { //Sinon on garde la taille originale $width = $size[0]; $height = $size[1]; } //On affiche l'image aléatoire (en respectant les standards ! ) echo "<a href=\"".$chem_img."/".$listef[$i]."\" onclick=\"window.open(this.href,'_blank');return false;\"><img style=\"border: none; width: ".$width."px; height: ".$height."px\" src=\"".$chem_img."/".$listef[$i]."\" alt=\"".$listef[$i]."\" /></a>"; echo(" - "); if ($k == 5) { echo("<br>"); $k=0; } } //On ferme le dossier closedir($handle); ?> il marche très bien si je mets comme chemin : $chem_img = "./images/"; mais pas si je met la variable rep: $chem_img = "./images/$rep"; seulement,je veux que l'utilisateur puisse choisir le dossier des images a afficher. j'ai donc fais une page qui liste les dossiers image et un lien qui permet d'envoyer au script quel est le dossier a afficher et donc a prendre en compte dans $chem_img. voici un exemple de lien, pour afficher le contenu de cavalaire : <a href="affi_photo.php?rep=cavalaire">Cavalaire</a> le problème est qu' il m'affiche que la première image du dossier cavalaire correctement et pour les autres j'ai le message d'erreur suivant : Warning: getimagesize(./images/cavalaire/img1.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /mnt/111/sdb/5/8/pl4ymobil/site1/photo.php on line 28 je ne vois pas d'ou peut venir le problème. le dossier cavalaire est contenu dans le dossier image, si je met en nom de chemin juste image, il va tout bien m'afficher, et si je met avec le $rep il m'affiche que la première et une erreur pour les autres. aidez moi svp, je sais plus quoi essayer ! merci a tous !
skale Posté 25 Novembre 2006 Posté 25 Novembre 2006 Bonjour, j'ai copié collé ton code, j'ai enregistré un fichier photo.php dans un répertoire x/ avec un répertoire images dans x/ et des sous-répertoires dans images Tout fonctionne très bien. Pas facile de t'aider donc Vérifie les droits d'utilisation des fichiers (sur un Système Linux), le PHP n'est peut-être pas autorisé à lire certaines images. @+ Emeric
nico_papy Posté 25 Novembre 2006 Auteur Posté 25 Novembre 2006 arf :s moi ça m'affiche que la première image et après le message d'erreur. cela ne peut-il pas venir du nom des photos ?
skale Posté 27 Novembre 2006 Posté 27 Novembre 2006 De retour de week-end Je suis étonné que tu n'ais pas eu d'autres réponses. Le nom des images est peut-être la cause effectivement, j'en doute un peu. Dans ce cas, essaye un stripslashes, ou url_encode (si espaces, accents...) et selon le codage de ton fichier PHP pourquoi de ne pas essayer utf8_decode() ou beaucoup plus simple, pour savoir si c'est bien là le problème renomme 1 ou 2 images pour voir si elles apparaissent. @+ Emeric
TheRec Posté 27 Novembre 2006 Posté 27 Novembre 2006 Bonjour, Le script fonctionne très bien à mon avis, du moins lorsque je l'ai testé (avec un serveur Windows et un serveur Linux, sans avoir de droits particulier à part ceux de lecture sur le dossier où se trouvaient les images) je n'ai eu aucune erreur :S Lorsque tu obtiens ce message d'erreur avec la fonction getimagesize, est-ce que la boucle continue à afficher les images ? Si ce n'est pas le cas c'est que les chemins vers ces images sont effectivement erronés. Regarde la source HTML que génère ton script et vérifie que le chemin vers les images sont corrects. Le message d'erreur est assez clair, la fonction getimagesize n'a pas trouvé le fichier que tu lui demande d'ouvrir... vérifie que le chemin que tu fourni à cette fonction est valide (fait un "echo $chem_img."/".$listef[$i];"), si c'est un chemin relatif essaie d'utiliser un chemin absolu (essaie peut-être d'utiliser realpath). Bonne continuation
nico_papy Posté 27 Novembre 2006 Auteur Posté 27 Novembre 2006 re, je me répond a moi même mais merci votre aide. ma réponse va peut être aider ceux qui ont des problèmes similaires. tout d'abord, les images ne s'affichaient pas correctement car j'avais des photos dans le repertoire "images", celui qui contenait les sous répertoire. Or dans ma page, j'ai un affichage d'image aléatoires et il lisait les images de "images" puis en affichait une au hasard et gardait le nom de l'image en cache. et mon erreur est du au fait que j'utilisais le même tableau dans les 2 scripts, ce qui signifie qu'il voulait lire l'image qu'il avait parcouru dans la séléction de l'image aléatoire. j'ai renomé le tableau et ça marche très bien. comme quoi
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant