Avatar billede d.kryger Praktikant
14. oktober 2009 - 13:41 Der er 8 kommentarer og
1 løsning

Sortering af filer

Hej eksperter.

Jeg bruger nedenstående kode til at vise filerne i en mappe i Flash. Men den sorterer ikke efter filnavn, det kunne jeg godt tænke mig. Kan nogen af Jer hjælpe med det?

Kode:
function showContent($path){


  if ($handle = opendir($path))
  {
 
      $up = substr($path, 0, (strrpos(dirname($path."/."),"/")));
        print "<levelup type=\"folder\" image=\"folder_up.png\" name=\"Level Up\" source=\"$up\" />";

      while (false !== ($file = readdir($handle)))
      {
          if ($file != "." && $file != "..")
          {
              $fName = $file;
              $file = $path.'/'.$file;
             
              if(is_file($file)) {
                  echo "<image type=\"slide\" name=\"$fName\" source=\"".$file."\" />";
              } elseif (is_dir($file)) {
                  print "<folder type=\"folder\" image=\"folder.png\" name=\"$fName\" source=\"".$file."\" />";
              }
          }
      }
       
        closedir($handle);
  }   

}

if (isset($_POST['submitBtn'])){
    $actpath = isset($_POST['path']) ? $_POST['path'] : '.';   
} else {
    $actpath = isset($_GET['path']) ? $_GET['path'] : '.';   
}


?>     
<?php
            echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
            echo "<parent path=\"".$_SERVER['PHP_SELF']."?path=$up\" >";
            showContent($actpath);
            echo "</parent>";     
?>
Avatar billede majbom Novice
14. oktober 2009 - 13:55 #1
prøv med:

function showContent($path){


  if ($handle = opendir($path))
  {

      $up = substr($path, 0, (strrpos(dirname($path."/."),"/")));
        print "<levelup type=\"folder\" image=\"folder_up.png\" name=\"Level Up\" source=\"$up\" />";

      while (false !== ($file = readdir($handle)))
      {
          if ($file != "." && $file != "..")
          {
              $fName = $file;
              $file = $path.'/'.$file;
           
              $file_arr[] =
          }
      }
     
        closedir($handle);
  }
  $file_arr = natsort($file_arr);
  $length = sizeof($file_arr);
  for($i=0;$i<=$length;$i++){
  if(is_file($file_arr[$i])) {
                  echo "<image type=\"slide\" name=\"$file_arr[$i]\" source=\"".$path."/".$file."\" />";
              } elseif (is_dir($file_arr[$i])) {
                  print "<folder type=\"folder\" image=\"folder.png\" name=\"$file_arr[$i]\" source=\"".$path."/".$file."\" />";
              }


}

if (isset($_POST['submitBtn'])){
    $actpath = isset($_POST['path']) ? $_POST['path'] : '.'; 
} else {
    $actpath = isset($_GET['path']) ? $_GET['path'] : '.'; 
}
Avatar billede d.kryger Praktikant
14. oktober 2009 - 14:21 #2
Det virker desværre ikke... Jeg får ingen fejl melding, men heller ikke noget filer!!!
Avatar billede majbom Novice
14. oktober 2009 - 14:51 #3
jeg har da osse dummet mig kan jeg se...

$file_arr = natsort($file_arr);

skal bare være:

natsort($file_arr);
Avatar billede jakobdo Ekspert
14. oktober 2009 - 15:10 #4
Hvad med noget i stil med:

<?php
//http://www.eksperten.dk/spm/889475
function showContent($path){
    if(is_dir($path)){
        $files = glob($path."/*");
        $up = substr($path, 0, (strrpos(dirname($path."/."),"/")));
        print "<levelup type=\"folder\" image=\"folder_up.png\" name=\"Level Up\" source=\"$up\" />";
        natcasesort($files);
       
        foreach($files as $file){
            $filename = basename($file);
            if(is_dir($file))
                echo '<folder type="folder" image="folder.png" name="'.$filename.'" source="'.$file.'" />';
            else
                echo '<image type="slide" name="'.$filename.'" source="'.$file.'" />';
        }
    }
}

if (isset($_POST['submitBtn'])){
    $actpath = isset($_POST['path']) ? $_POST['path'] : '.'; 
} else {
    $actpath = isset($_GET['path']) ? $_GET['path'] : '.'; 
}
?>   

<?php
    echo '<?xml version="1.0" encoding="utf-8"?>';
    echo '<parent path="'.$_SERVER['PHP_SELF'].'?path='.$up.'" >';
    showContent($actpath);
    echo '</parent>'; 
?>
Avatar billede d.kryger Praktikant
15. oktober 2009 - 08:35 #5
Der er desværre ikke nogle af forslagene der virker! Gør jeg noget forkert?
Avatar billede jakobdo Ekspert
15. oktober 2009 - 09:01 #6
Har du et sted man kan se output ?
Jeg ville da bestemt mene min kode sortere filerne...
Avatar billede d.kryger Praktikant
16. oktober 2009 - 09:32 #7
Jakobdo: Sorry... Jeg havde vist ikke fået testet din kode ordentlig igennem, da jeg jo nu kan se at det virker, ligesom det skal... Tak for hjælpen og hvis du lige vil ligge et svar, så skal du få nogle point!
Avatar billede jakobdo Ekspert
16. oktober 2009 - 09:48 #8
Svar!
Avatar billede jakobdo Ekspert
16. oktober 2009 - 10:06 #9
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester