Partage

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!
3 septembre 2009 à 18:54:39

utilise la fonction glob("*.jpg")
pour afficher que les jpg
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..
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
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 :)
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
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 />';
}
?>
24 novembre 2016 à 10:35:54

Génial ton code, french-petzouille. Merci infiniment.

Afficher toutes les images d'un dossier

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
  • Editeur
  • Markdown