Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Dateien auslesen und sortieren

Frage Entwicklung PHP

Mitglied: 17735

17735 (Level 2)

10.06.2007, aktualisiert 11.06.2007, 4393 Aufrufe, 5 Kommentare

Hallo,

auf folgende Weise lese ich mit PHP den Inhalt eines Verzeichnisses aus:

01.
$pfad = "data"
02.
$dirhandle = opendir($pfad); 
03.
 
04.
while($file = readdir($dirhandle)) { 
05.
             
06.
                if($file != "." AND $file != ".." AND $file != ".htaccess") { 
07.
                 
08.
                    $filename = $file
09.
                    $filesize = round(filesize("$pfad/$file") / 1024); 
10.
                     
11.
                    if($filesize == 0) { $filesize = 1; } 
12.
                     
13.
                    echo "<a href=\"$pfad/$filename\">$filename $filesize KB</a>"
14.
                     
15.
16.
                 
17.
18.
 
19.
closedir($dirhandle);
Auf meinem lokalen XAMPP-Testsystem unter Windows klappt das auch wunderbar - wenn ich es beim Dienstleister einsetze, der Debian Linux verwendet, funktioniert das Skript zwar auch, es sortiert die Dateien dann aber nicht alphatetisch, sondern nach dem Änderungsdatum, so dass neu hochgeladene Dateien ganz unten stehen, obwohl sie vom Dateinamen und der alphabetischen Reihenfolge vielleicht viel höher stehen sollten.

Wie kann ich den Inhalt des Verzeichnisses beim Auslesen nach dem Namen ordnen?

Gruß,
Ahnenforscher
Mitglied: Guenni
10.06.2007 um 19:35 Uhr
@17735

Hi,

dann speichere die gefundenen Dateien in ein Array,
und lass dieses sortieren.

01.
$pfad = "."
02.
$dirhandle = opendir($pfad); 
03.
while($file = readdir($dirhandle)) { 
04.
 if($file != "." AND $file != ".." AND $file != ".htaccess")) { 
05.
  $filename = $file
06.
  $filesize = round(filesize("$pfad/$file") / 1024); 
07.
  if($filesize == 0) { $filesize = 1; } 
08.
	// Dateien in ein Array ablegen 
09.
  $file_array[]=array($filename,$filesize); 
10.
11.
12.
closedir($dirhandle); 
13.
// Funktion mit Sortierkriterien, 
14.
// wird von usort benötigt 
15.
function cmp($a, $b) { 
16.
 $index = 0;  // hier kann man den index aendern 
17.
 if ($a[$index] == $b[$index]) return 0; 
18.
 return ($a[$index] > $b[$index])?1:-1; 
19.
20.
// Die Funktion usort bekommt das Array und 
21.
// die zuvor definierte Funktion als Parameter 
22.
usort ($file_array, 'cmp'); 
23.
foreach($file_array as $file){ 
24.
 echo "<a href=\"$pfad/$file[0]\">$file[0]  $file[1] KB</a><br>"
25.
}
Bitte warten ..
Mitglied: 17735
10.06.2007 um 20:09 Uhr
Hallo Günni,

danke für deine Antwort - es funktioniert bei mir aber nicht richtig.

Wenn im Verzeichnis 3 Dateien vorhanden sind, werden auch drei Einträge ausgegeben, allerdings 3 x der gleiche Dateiname und die gleiche Dateigröße.

Woran liegt das?

Gruß,
Ahnenforscher

PS: Die Idee mit dem Array finde ich ansonsten sehr gut.
Bitte warten ..
Mitglied: 17735
10.06.2007 um 20:15 Uhr
Ach mein Fehler ich Schnösel...hab den Index [0] bzw. [1] hinter dem Arraynamen vergessen

Sorry

Meine letzte Frage wäre jetzt noch: Funktioniert das auch ohne die Berücksichtigung von Groß/Kleinschreibung? Unter Linux werden bei dieser Vorgehensweise nämlich zuerst die Dateien, die mit einem Großbuchstaben beginnen sortiert und dann die, die mit einem Kleinbuchstaben beginnen.

Gruß,
Ahnenforscher
Bitte warten ..
Mitglied: Guenni
11.06.2007 um 12:13 Uhr
@17735

Hi,

Meine letzte Frage wäre jetzt noch: Funktioniert das auch ohne die Berücksichtigung von Groß/Kleinschreibung?
Unter Linux werden bei dieser Vorgehensweise nämlich zuerst die Dateien, die mit einem Großbuchstaben beginnen
sortiert und dann die, die mit einem Kleinbuchstaben beginnen.

... ich denke mal, das würde 'ne ziemlich aufwändige Sache, da im Ascii-Code die Großbuchstaben
ja nun mal "kleiner" sind als die Kleinbuchstaben. Ich lege Dateien grundsätzlich in Kleinbuchstaben
an, da stellt sich das Problem erst garnicht.

Ach, und bevor jemand auf die Idee kommt: "Wandel doch alles in Kleinbuchstaben um, wenn
das Array gefüllt wird", also $file_array[]=array(strtolower($filename),$filesize);,
dann wird zwar alles richtig sortiert angezeigt, aber die Links, die du ausgibst, funktionieren
nicht mehr.

Gruß
Günni
Bitte warten ..
Mitglied: 17735
11.06.2007 um 12:51 Uhr
Ach, und bevor jemand auf die Idee kommt:
"Wandel doch alles in Kleinbuchstaben
um, wenn
das Array gefüllt wird", also
$file_array[]=array(strtolower($filename),$filesize);,
dann wird zwar alles richtig sortiert
angezeigt, aber die Links, die du ausgibst,
funktionieren
nicht mehr.

Gruß
Günni

Eben.

Naja, dann werde ich die Dateien nur mit Kleinbuchstaben benennen.

Vielen Dank für deine Hilfe,
Ahnenforscher
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Dateien suchen, kopieren und sortieren
Frage von BAD1HORBatch & Shell6 Kommentare

Hallo, folgendes Problem: Dateien, die auf einem Laufwerk monatsweise in Ordnern abgelegt sind, sollen per Batch auf ein anderes ...

Batch & Shell
Dateien in alphabetische Ordner sortieren
gelöst Frage von symei3Batch & Shell10 Kommentare

Hallo Forumsgemeinde, leider habe ich sehr wenig Ahnung von Batchdateien etc. Deswegen wird meine Frage vermutlich nur ein leises ...

Batch & Shell
Eine Batch zum Sortieren verschiedener Dateien in Ordner
gelöst Frage von JaglagBatch & Shell16 Kommentare

Hallo, da ich leider mit Batch und shell nicht so erfahren bin hoffe das ein findiger User hier weiterhelfen ...

Batch & Shell
Via CMD Dateien in Ordner sortieren
gelöst Frage von tkt2208Batch & Shell10 Kommentare

Hallo zusammen, ich habe in einem Ordner sehr viele Dateien mit gleichem Namen die sich nur am Ende durch ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 10 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 14 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 14 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 17 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...