2009-12-29 4 views
0

Comment puis-je lister les images dans un dossier ... (qui pourrait être n'importe quel nombre) et les faire écho dans une liste faisant le sûr que le premier li a une classe de " d'abord » et le dernier élément de la liste a une classe de « dernier » comme si ...liste les images dans un répertoire avec php et ajoute une classe spécifique

<li class="first"><img src="flowing-rock.jpg" /></li> 
<li><img src="stones.jpg" alt="Stones" /></li> 
<li><img src="grass-blades.jpg" /></li> 
<li><img src="ladybug.jpg" alt="Ladybug" /></li> 
<li class="last"><img src="pier.jpg" alt="Pier" /></li> 

Toute aide serait appréciée ...

Répondre

1

qui suit sélectionnera le premier et le dernier (si elles existent), en les imprimant avant et après le reste, respectivement. Ceux-ci sont triés alphabétiquement par scandir().

$contents = scandir(DIRECTORY); 
array_pop($contents); // Remove "." 
array_pop($contents); // Remove ".." 
$last = array_pop($contents); // Grab last element 
$first = array_shift($contents); // Grab first element 

// print elements 
if (!is_null($first)) echo "<li class='first'><img src='$first' /></li>\n"; 
foreach ($contents as $key => $val) 
    echo "<li><img src='$val' /></li>\n"; 
if (!is_null($last)) echo "<li class='last'><img src='$last' /></li>\n"; 
+0

bravo pour toute votre aide, cela fonctionne très bien! – jeffery

0

Vous pouvez utiliser glob pour rechercher des fichiers d'image, puis vérifiez l'index de l'élément courant du tableau:

$imgs= glob('/path/to/images/*.jpg'); 

for ($i=0; $i<count($imgs); $i++) { 
if ($i == 0) $class= ' class="first"'; 
else if ($i == count($imgs)-1) $class= ' class="last"'; 
else $class= ''; 
printf("<li%s><img src=\"%s\" /></li>\n", $class, htmlentities(basename($imgs[$i]))); 
} 

Retirez l'appel basename si vous souhaitez conserver le nom du répertoire.

+0

Merci pour votre réponse je suis allé avec le premier ... merci encore! – jeffery

Questions connexes