Bonjour à tous,
En utilisant opendir() et readdir(), y a-t-il moyen d'obtenir les fichiers triés par ordre alphabétique des noms de fichiers ?
Si oui, comment ?
Salut heddicimi,Je voudrais juste insiter sur le fait que scandir réalise ça stockage dans un array, puis sort() de cet array, tout seul...
<html>
<!--
------------ mettre ce fichier dans le répertoire des photos et le nommer index.php
------------ il affiche tous les fichiers *.jpg de ce répertoire
------------ by PhilFree 19.09.2005
-->
<head>
<title>Diaporama</title>
</head>
<body>
<?php
$repertoire= ".";
?>
<DIV ID=photo_box></div>
<script type="text/javascript">
photo = new Array;
titre = "Photos du site <a href="http://www.page.com/">page.com<\/a>";
titre += " 19 septembre 2005" //-------------- date des photos
function aff_photos(num) {
if(document.getElementById) {
precedent = "";
suivant = "";
if(num!=0)
precedent = "<A HREF=# onClick='aff_photos("+(num-1)+");return(false)'><- Précédente</A>";
if(num!=(photo.length-1))
suivant = "<A HREF=# onClick='aff_photos("+(num+1)+");return(false)'>Suivante -></A>";
// ---- Affichage de la photo et des liens suivant et précédent
document.getElementById("photo_box").innerHTML =
"<table><tr><td width="250">"
+ precedent + "</td><td align="center" width="150">Photo: " + (num+1) + "/" + (photo.length)
+ "</td><td align="right" width="150">" + suivant
+ "</td><td align="right">" + titre + "</td></tr><tr><td colspan="4"><IMG SRC="" + photo[num] + "" BORDER=0></td></tr></table>";
}
}
<?php // --------------- Création de l'array JavaScript contenant le nom des photos type nom.jpg
$a = 0;
$i = 0;
$handle = opendir($repertoire);
while (($file = readdir())!=false) { // ---- lecture du répertoire
clearstatcache();
if(strtolower(substr($file,-4))==".jpg" ) { // ---- si c'est un fichier jpg on le met dans l'Array
$files[$a] = $file;
$a++;
}
}
closedir($handle);
sort ($files); // ---- on trie l'Array contenant les noms de fichier
while ( $i < $a ) { // ---- on écrit l'Array JavaScript contenant les noms des photos
echo "photo[$i] = ". ""$files[$i]";
";
$i++;
}
?>
window.onload = new Function("aff_photos(0)");
</script>
</body>
</html>
Si tu penses qu'on peut faire mieux et plus court avec scandir() je suis preneur $files=scandir($repertoire);
remplace les lignes :
$handle = opendir($repertoire);
while (($file = readdir())!=false) { // ---- lecture du répertoire
clearstatcache();
if(strtolower(substr($file,-4))==".jpg" ) { // ---- si c'est un fichier jpg on le met dans l'Array
$files[$a] = $file;
$a++;
}
}
closedir($handle);
sort ($files); // ---- on trie l'Array contenant les noms de fichier
Mais maintenant, tu as dis le soucis... C'est utilisable à partir de php5... De plus, comme tu filtres sur les jpg seulement, scandir n'est plus vraiment approprié (bien qu'on peux filtrer ensuite lors du parcours du tableau de résultat...)