Problème de lecture de dossier

Statut
N'est pas ouverte pour d'autres réponses.

null

ose();
Salut à tous,

Je travaille sur un site et il y a une partie avec une galerie photos. Le principe est qu'il y a un dossier "/photos/" et dedans des dossiers. Le script doit lister les dossiers et quand on clique dessus, charger des miniatures des ficheirs (qu'il créé s'il n'y en a pas) et lorsqu'on clique sur ces miniatures, l'image apparaît dans une popup !

Tout ça a été parfaitement, vous pouvez voir le résultat : www.revoxweb.com, partie "Média".

Le problème est que les dossiers doivent être dans un certain ordre, et je ne sais pas comment faire ça :oops: Quelqu'un serait m'aider pour les classer ?
 

MbK_

Etudjant
tu les classes par ce que tu veux

dans ta requete

Code:
mysql_query("select *  from ".$table."  WHERE [critere] AND [critere2?] order by [ce que tu veux]");
 
1er
OP
null

null

ose();
Mais c'est pas avec MySQL, c'est des dossiers sur le disque dur du serveur :

Code:
$fpDir = opendir($dir);

     while($file = readdir($fpDir))
     {
        if($file[0] != ".")
        {
           if(is_dir($dir."/".$file))
           {
               //etc
 

MbK_

Etudjant
holala. je capte pas tres bien ton code la :x

il faudrait plus de précision
 
1er
OP
null

null

ose();
Regarde, j'ai un dossier "/photos/" et dans des autres dossiers et encore dedans des images :

/photos/
........../Gallerie 1/image1.jpg
........../Gallerie 1/image2.jpg
........../Gallerie 1/image3.jpg

........../Gallerie 2/image1.jpg
........../Gallerie 2/image2.jpg
........../Gallerie 3/image3.jpg

Le problème c'est que j'arrive pas a trouver comment afficher par ordre alphabétique par exemple
 

MbK_

Etudjant
en fait elle sont pas reprises dans une DB?
 
1er
OP
null

null

ose();
non :p
 

Tigrou

Touriste
Hummmm oui c est tout a fait possible de trier les directories :wink:
Pour expliquer en gros, tu dois les stocker dans un vecteur et ensuite opérer un sort() sur le vecteur en question -> ce qui va assigner de nouvelles clés aux éléments de ton vecteur.

Enfin soit :
Ce que tu cherches est dans la doc php
:arrow: http://be2.php.net/manual/fr/function.opendir.php
:arrow: Et comble du luxe il y a meme des exemples de code
Code:
<?php
// show directory content
function showDir($dir, $i, $maxDepth){
   $i++;
   if($checkDir = opendir($dir)){
       $cDir = 0;
       $cFile = 0;
       // check all files in $dir, add to array listDir or listFile
       while($file = readdir($checkDir)){
           if($file != "." && $file != ".."){
               if(is_dir($dir . "/" . $file)){
                   $listDir[$cDir] = $file;
                   $cDir++;
               }
               else{
                   $listFile[$cFile] = $file;
                   $cFile++;
               }
           }
       }
      
       // show directories
       if(count($listDir) > 0){
           sort($listDir);
           for($j = 0; $j < count($listDir); $j++){
               echo "
               <tr>";
                   $spacer = "";
                   for($l = 0; $l < $i; $l++) $spacer .= " ";
                   // create link
                   $link = "<a href=\"" . $_SERVER["PHP_SELF"] . "?dir=" . $dir . "/" . $listDir[$j] . "\">$listDir[$j]</a>";
                   echo "<td>" . $spacer . $link . "</td>
               </tr>";
               // list all subdirectories up to maxDepth
               if($i < $maxDepth) showDir($dir . "/" . $listDir[$j], $i, $maxDepth);
           }
       }
      
       // show files
       if(count($listFile) > 0){
           sort($listFile);
           for($k = 0; $k < count($listFile); $k++){
               $spacer = "";
               for($l = 0; $l < $i; $l++) $spacer .= " ";
               echo "
               <tr>
                   <td>" . $spacer . $listFile[$k] . "</td>
               </tr>";   
           }
       }       
       closedir($checkDir);
   }
}

if($_GET["dir"] == "" || !is_dir($_GET["dir"])) $dir = getcwd();
else $dir = $_GET["dir"];
// replace backslashes, not necessary, but better to look at
$dir = str_replace("\\", "/", $dir);

// show parent path
$pDir = pathinfo($dir);
$parentDir = $pDir["dirname"];

echo "<a href=\"" . $_SERVER["PHP_SELF"] . "\"><h3>Home</h3></a>";
echo "Current directory: " . $dir;
echo "<a href=\"" . $_SERVER["PHP_SELF"] . "?dir=$parentDir\"><h4>Parent directory: $parentDir</h4></a>";

// Display directory content
echo"<table border=1 cellspacing=0 cellpadding=2>
<tr><th align=left>File / Dir</th>";

// specifies the maxDepth of included subdirectories
// set maxDepth to 0 if u want to display the current directory
$maxDepth = 0;
showDir($dir, -1, $maxDepth); 
?>
 
1er
OP
null

null

ose();
Niquel, je te remercie !
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut