AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Dateibrowser sortiet

Ein Thema von CalganX · begonnen am 1. Feb 2004 · letzter Beitrag vom 1. Feb 2004
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

[PHP] Dateibrowser sortiet

  Alt 1. Feb 2004, 14:35
Hi,
ich versuche gerade einen Dateibrowser zu realisieren.

Dazu habe ich mir folgende Funktion geschrieben:
Code:
<?php
   function listdir($dir) {
      // subfunction begin: ls_recursive
      function ls_recursive($dir) {
         if (is_dir($dir)) {
            $dirhandle = opendir($dir);
            while (($file = readdir($dirhandle)) !== false) {
               if (($file != ".") && ($file != "..")) {
                  $currentfile = $dir."/".$file;
                  if(is_dir($currentfile)) {
                     print "[b]Verzeichnis:[/b] ".realpath($currentfile)."
";
                  } else {
                     echo realpath($currentfile)."
";
                  }
               }
            }
         }
      }
      // subfunction end
   
      ls_recursive($dir);
   }

   $dir="/";
   listdir(getcwd().$dir);
?>
Die Ausgabe ist aber ein wenig chaotisch:
Ausgabe
D:\public_html\CSD-Software\.htaccess
D:\public_html\CSD-Software\about_us.php
D:\public_html\CSD-Software\comments.php
D:\public_html\CSD-Software\contact.php
D:\public_html\CSD-Software\header.gif
D:\public_html\CSD-Software\impressum.php
D:\public_html\CSD-Software\index.php
D:\public_html\CSD-Software\stylesheet.css
Verzeichnis: D:\public_html\CSD-Software\other
Verzeichnis: D:\public_html\CSD-Software\admin
Verzeichnis: D:\public_html\CSD-Software\downloads
Verzeichnis: D:\public_html\CSD-Software\errors
Verzeichnis: D:\public_html\CSD-Software\images
Verzeichnis: D:\public_html\CSD-Software\includes
Verzeichnis: D:\public_html\CSD-Software\projekte
Verzeichnis: D:\public_html\CSD-Software\service
Verzeichnis: D:\public_html\CSD-Software\stuff
Verzeichnis: D:\public_html\CSD-Software\tutorials
Verzeichnis: D:\public_html\CSD-Software\new
D:\public_html\CSD-Software\TEST.php


Nun meine Frage: wie kann ich diese Ausgabe einigermaßen ordnen? Also so, dass Verzeichnisse am Anfang stehen und diese und Dateien nach Alphabet geordnet werden.

Chris
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: [PHP] Dateibrowser sortiet

  Alt 1. Feb 2004, 15:21
Also, zuerst packst du alle Daten in ein Array. So, nun kannst du dieses sortieren (PHP hat ja genug Funktionen dazu), und die Ausgabe ist alphabetisch.

Willst du nun Ordner und Dateien seperat anordnen, brauchst du mehr Informationen als nur den Namen. Was sich anbieten würde, wäre folgende Struktur: Ein Array, dass assoziative Arrays mit den Bezeichnern name und directory enthält.
Dein Code müsste also etwa so aussehen:


Code:
[...]
$filelist[]['name'] = realpath($currentfile);
$filelist[]['directory'] = is_dir($currentfile);
[...]
Wobei $filelist das Array ist.

Nun musst du zum Sortieren folgendes tun: Entweder einen eigenen Sortieralgo schreiben oder usort benutzen, dort wird zum Vergleichen der Elemente eine eigene Funktion benutzt. Hier gilt: Buchstabe mit kleinerem ASCII-Wert ist kleiner als Buchstabe mit größerem ASCII-Wert, abr Verzeichnis ist immer kleiner als Datei.

Also so (nicht getestet):

Code:
function cmp_values($a, $b)
{
  if ($a['name'] == $b['name')
    return 0;
  if ($a['directory'])
    if ($b['directory'])
      return ($a['name'] > $b['name']) ? -1 : 1;
    else
      return -1; //a ist "größer"
  else
    return ($a['name'] > $b['name']) ? -1 : 1;
}

Ohne Gewähr, probier es mal aus.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [PHP] Dateibrowser sortiet

  Alt 1. Feb 2004, 15:28
Hi Chewie,
so ähnlich habe ich es gerade gemacht: ich habe nur zwei Arrays genommen und die Compare-Funktion Case-Insenstiv gestaltet.

Vielen Dank, jetzt funktioniert es!
Chris
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz