Partage
  • Partager sur Facebook
  • Partager sur Twitter

Afficher toutes les images d'un dossier

3 septembre 2009 à 18:52:45

Salut!

Voici mon code qui ne fonctionne pas (je ne comprends pas pourquoi <_<)

<?php
$dir = ".";


if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo "<a href=\"$file\"/><br>";
        }
        closedir($dh);
    }
}
?>


Ce code se veut afficher toutes les images du dossier dans lequel se trouve cette page. Problème: page blanche. :p

Merci pour votre aide!
  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2009 à 18:54:39

utilise la fonction glob("*.jpg")
pour afficher que les jpg
  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2009 à 18:58:11

Salut, merci pour ta réponse mais sur google à part un exemple que je ne comprends pas:
$thumbfns = glob("_*.jpg");
    $jpgfns = glob("*.jpg");
    $picfns = array_diff($jpgfns, $thumbfns);

(et que je sais pas l'intégrer) je me retrouve avec des sources en C.. :euh:

Pourrais-tu me montrer comment on s'en sert? merci par avance :)

edit: j'ai aussi des .png..
  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2009 à 19:03:25

tu mets en argument de cette fonction
* -> comme joker = tous caractères
et ton extension .jpg

d'où tout ce qui commence par qq chose et qui se termine par .jpg

glob() retourne un tableau contenant les fichiers et les dossiers trouvés, un tableau vide si aucun fichier/dossier n'est trouvé ou FALSE en cas d'erreur

ensuite tu fais une boucle foreach ... pour lister le contenu du tableau
  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2009 à 19:04:23

moi pour mon site j'utilise celui-là, normalement il liste simplement les fichiers d'un dossier mais comme je l'utilise pour mon (petit) host d'image, j'ai réjouté img pour qu'il affiche (et ne donne pas de liens) les images, le voici :

<?php
$dir_nom = '.'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> ('point')
$dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant
$fichier= array(); // on déclare le tableau contenant le nom des fichiers
$dossier= array(); // on déclare le tableau contenant le nom des dossiers

while($element = readdir($dir)) {
	if($element != '.' && $element != '..') {
		if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;}
		else {$dossier[] = $element;}
	}
}

closedir($dir);

if(!empty($dossier)) {
	sort($dossier); // pour le tri croissant, rsort() pour le tri décroissant
	echo "<p>Liste des dossiers accessibles dans '$dir_nom' : \n\n</p>";
	echo "\t\t<ul class=rien>\n";
		foreach($dossier as $lien){
			echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";
		}
	echo "\t\t</ul>";
}

if(!empty($fichier)){
	sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant
	echo "<p>Liste des images accessibles sur l'hebergeur : \n\n</p>";
	echo "\t\t<ul class=rien>\n";
		foreach($fichier as $lien) {
			echo "\t\t\t<li><img src=\"$dir_nom/$lien \"></li>\n";
		}
	echo "\t\t</ul>";
 }
?>


je ne sais pas s'il va t'être utile mais je poste quand même, si tu veux qu'il liste uniquement les images, je pense que c'est réalisable avec un if :)
  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2009 à 19:11:38

Omg.. Mais j'ai jamais fait de PHP moi que du C donc je ne sais pas comment implanter ça et encore moins comment modifier le code de kzl31.

Vous ne pouvez pas juste modifier mon code pour que je l'étudie? Car au final il me faut juste ce script j'ai besoin de rien d'autre. Jme vois mal apprendre le php juste pour ce script. >_< Plus tard p'tet mais là je peux pas.

Je sais que c'est un peu "contre l'éthique" mais n'apprenant pas le php et étant de toute façon bloqué, je ne puis qu'attendre un sauveur. Si vous pouviez donc me faire une fleur. :)
Mais je demande quand même des explications car le copie/colle je trouve ça inutile.

merci :p
  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2009 à 19:30:21

si tu as aussi des gif ou png ave cles jpg

<?php

$dir = 'photos/miniatures/*.{jpg,jpeg,gif,png}';
$files = glob($dir,GLOB_BRACE);
 
echo 'Listing des images du repertoire miniatures <br />';
foreach($files as $image)
{  
   $f= str_replace($repertoire,'',$image);
   echo $f.'<br />';
}
?>
  • Partager sur Facebook
  • Partager sur Twitter
24 novembre 2016 à 10:35:54

Génial ton code, french-petzouille. Merci infiniment.
  • Partager sur Facebook
  • Partager sur Twitter
24 mars 2020 à 12:19:30 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


24 mars 2020 à 13:42:28

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter