Problème de lecture de dossier

Discussion dans 'Web, design' créé par null, 12 Février 2005.

Statut de la discussion:
Fermée.
  1. Offline
    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 ?
    null, 12 Février 2005
    #1
  2. Offline
    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]");
    MbK_, 12 Février 2005
    #2
  3. Offline
    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
    
    null, 12 Février 2005
    #3
  4. Offline
    MbK_ Etudjant
    holala. je capte pas tres bien ton code la :x

    il faudrait plus de précision
    MbK_, 12 Février 2005
    #4
  5. Offline
    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
    null, 12 Février 2005
    #5
  6. Offline
    MbK_ Etudjant
    en fait elle sont pas reprises dans une DB?
    MbK_, 12 Février 2005
    #6
  7. Offline
    null ose();
    non :p
    null, 12 Février 2005
    #7
  8. Offline
    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); 
    ?>
    Tigrou, 12 Février 2005
    #8
  9. Offline
    null ose();
    Niquel, je te remercie !
    null, 12 Février 2005
    #9
Statut de la discussion:
Fermée.