par
PhilFree » 19 sept. 2005, 17:41
Je voudrais juste insiter sur le fait que scandir réalise ça stockage dans un array, puis sort() de cet array, tout seul...
Salut heddicimi,
J'ai choisi sort() parce que j'ai lu que scandir() n'est pas compatible avec toutes les versions de PHP.
Pour te donner une meilleure idée, voici mon script:
<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
Encore merci à vous deux.
[quote="heddicmi"]Je voudrais juste insiter sur le fait que scandir réalise ça [i]stockage dans un array, puis sort() de cet array[/i], tout seul...[/quote]
Salut heddicimi,
J'ai choisi sort() parce que j'ai lu que scandir() n'est pas compatible avec toutes les versions de PHP.
Pour te donner une meilleure idée, voici mon script:
[php]
<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>
[/php]
Si tu penses qu'on peut faire mieux et plus court avec scandir() je suis preneur :!:
Encore merci à vous deux.