Afficher toutes les images d'un dossier

Petit nouveau ! | 9 Messages

03 avr. 2008, 11:21

Bonjour à tous,

Je termine un projet pour les cours (donc je débute en HTML) et je suis bloqué qur quelque chose qui me parait assez simple ...

En berf, j'upload des images dans un dossier, un dossier par utilisateur.
define('TARGET', "image_aquarium/$idpage/");
1. Affichage

J'aimerais que lorsqu'on va sur une page avec l'idpage correspondant au dossier, toutes les images soient affichées dans un tableau. Je suppose qu'il doit exister une fonction pour ça mais je ne trouva pas.

2. Suppression

Comment faire, en php, pour supprimer des images dans un dossier ... la je cale complètement.


NB : l'idée générale est que chaque membre puisse envoyer des photos pour afficher sur sa page perso (aqarium.php) - un peu comme un site de "rencontre" - et que donc les images soient stockées dans un répertoire et puissent être gérée par l'administrateur et les membres. Si quelqu'un a une source d'aide, je n'ai rien trouvé pour le moment.


Un grand merci pour l'aide que vous pouvez m'apporter.


EsKa

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
Modifié en dernier par EsKa le 03 avr. 2008, 11:26, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 avr. 2008, 11:24

Regarde du côté de la fonction readdir() pour parcourir les éléments d'un dossier (afficher les images que tu y trouves ne devrait pas poser trop de problème :))

Quant à la supression d'un fichier, c'est vers unlink() qu'il faut te tourner :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 9 Messages

03 avr. 2008, 11:41

Mon premier problème ...
		<?php
		if ($handle = opendir("image_aquarium/$idpage/")) {
			while (false !== ($file = readdir($handle))) {
				echo "<img src=\"$file\">";
			}
			closedir($handle);
		}
		?>
Ca fontionne presque, mais pour lui, "$file" correspond à : ...nom_image.jpg (par exemple). Les "..." correspondent je suppose au répertoire, comme faire pour ne pas les afficher avec que la fonction image fonctionne ?

Edit 1 :

J'ai essayé ceci :

echo "<img src=\"image_aquarium/$idpage/$file\">";
Il affiche l'image, mais à gauche de l'image il veut afficher deux images inexistantes ... dont les liens sont :

http://127.0.0.1:8080/PROJET/image_aquarium/8/
http://127.0.0.1:8080/PROJET/image_aquarium/

C'est donc en effet le chemin, mais comment faire pour ne pas les afficher ?


Edit 2 : Résolu... ça m apprendra a poster trop vite, désolé !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 avr. 2008, 11:52

Un dossier contient généralement deux "dossiers" cachés.

Le premier est "." qui fait référence au dossier courant
Le second est ".." qui fait référence au dossier parent.

Lorsque tu parcours la liste des éléments du dossier, il te faut tester que l'élément est bien un fichier (is_file()) ou que sa valeur est différente de "."ou ".." pour éviter d'afficher ces deux éléments :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 9 Messages

03 avr. 2008, 12:36

J'y suis presque ...
		<?php
		if ($handle = opendir("image_aquarium/$idpage/")){
		    while (false !== ($file = readdir($handle))){
		        if ($file != "." && $file != "..") {
		            echo "<a href=\"image_aquarium/$idpage/$file\" target=\"_blank\"><img width=\"150\" src=\"image_aquarium/$idpage/$file\"> </a>";
		        }
		    }
		    closedir($handle);
		}
		else {
			echo"Pas d'images";
		}
		?> 
Il me reste u problème, c'est que si le dossier n'existe pas, c'est à dire, si le membre n'a pas posté d'image, il me met (en plus du message) :

Code : Tout sélectionner

Warning: opendir(image_aquarium/9/) [function.opendir]: failed to open dir: No such file or directory in D:\EsKarium.be projet informatique\ZMWS\_web.zmwsc\PROJET\aquarium.php on line 46
Pour une requète SQL, je connais le "or die" mais pour un fichier qui n'existe pas ...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 avr. 2008, 13:04

Le or die pourrait marché également (c'est pas réservé aux requêtes), mais il serait sans doute plus judicieux de tester avant si le dossier existe ou pas : file_exists() :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 9 Messages

03 avr. 2008, 14:06

Parfait, ça marche sans problème maintenant.

Merci pour ton aide !