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

Sortierreihenfolge von Dateinamen mit PHP

Frage Entwicklung PHP

Mitglied: Jochem

Jochem (Level 2) - Jetzt verbinden

13.02.2013 um 08:07 Uhr, 1683 Aufrufe, 4 Kommentare

Moin zusammen,

ich bastel gerade an einer eigenen Lösung für ein Fotoalbum. Dabei kommt der folgende Codeschnipsel zum Einsatz:

01.
<?php 
02.
 
03.
function readDirRecursive($dir)  
04.
05.
    if (false === is_dir($dir)) { 
06.
        return false; 
07.
08.
  
09.
    $handle = opendir($dir);  
10.
  
11.
    if (false === $handle) { 
12.
        return false; 
13.
14.
  
15.
    $result = array(); 
16.
  
17.
    while (false !== ($file = readdir($handle))) { 
18.
  
19.
        // Ausschluss von . und .. 
20.
        if ('.' == $file || '..' == $file) { 
21.
            // nächstes Element 
22.
            continue; 
23.
24.
  
25.
          
26.
        // Array Zuweisung des Dateinamens 
27.
        $result[] = $file; 
28.
  
29.
30.
    closedir($handle); 
31.
  
32.
return $result; 
33.
34.
$dir =  $HTTP_GET_VARS["dir"]; 
35.
 
36.
$root = '../Bilder3/'; 
37.
$subdir1 = '/thumbs'; 
38.
$subdir2 = '/slides'; 
39.
 
40.
$dir1 = $root.$dir.$subdir1; 
41.
$result = readDirRecursive($dir1); 
42.
$pics1 = $result; 
43.
 
44.
if (sizeof($pics1)) 
45.
$anz1 = (sizeof($pics1));  
46.
else 
47.
echo 'Verzeichnis '.$pics1.' nicht gefunden'; 
48.
 
49.
 
50.
$dir2 = $root.$dir.$subdir2; 
51.
$result = readDirRecursive($dir2); 
52.
$pics2 = $result; 
53.
 
54.
if (sizeof($pics2)) 
55.
$anz2 = (sizeof($pics2));  
56.
else 
57.
echo 'Verzeichnis '.$pics2.' nicht gefunden'; 
58.
 
59.
 
60.
for ($i = 0; $i < $anz1; $i++) { 
61.
 
62.
$bild = $dir2.'/'.$pics2[$i]; 
63.
$daum = $dir1.'/'.$pics1[$i]; 
64.
 
65.
echo '<a href="'.$bild.'" height="600" width="800" target="_blank"><img src="'.$daum.'" height="90" width="120" border="2" alt="Bild'.$i.'"</img></a>'; 
66.
 
67.
68.
 
69.
?> 
In $dir1 sind die Bilder in Vollformat, in $dir2 stehen die Thumbnails dazu. Beide Verzeichnisse sind, wenn ich per FTP auf den Server gehe, identisch aufgebaut. Sie enthalten die gleiche Anzahl von Dateien und die Dateien stehen auch in identischer Reihenfolge und haben identische Namen.
Die Thumbs werden angezeigt, nur die zugehörigen Vollbilder sind ganz andere.
Die Dateien enthalten im Namen keine Umlaute, Leer- oder Sonderzeichen mehr. Diese habe ich nach dem Upload entsprechend abgeändert. Und da scheint mir der Knackpunkt zu liegen, denn wenn ich mir die Anzeige der Bilder so ansehe, so ist das erste Bild nicht eines, welches mit einer Zahl beginnt, sondern mit einem Buchstaben (das mit der Zahl hatte eine Leerstelle im Namen, die ich durch einen Unterstrich ersetzt habe).
Der Ziel-Server läuft unter einem Unix-Derivat, so daß ich schon auf die Schreibweise Groß-/Kleinschreibung geachtet habe.
Gibt es unter Unix eine andere Sortierfolge als unter Windows (Zahlen vor Buchstaben)?
Habe ich da irgendwas übersehen, was das Hochladen und umbenennen angeht, oder hat sich ein Gedankenfehler eingeschlichen?

Gruß J chem

PS: Habt ihr noch eine Idee, wie ich von der Galerie-Anzeige zum Vollbild wechseln und dann im Vollbild-Modus weiterblättern kann, ohne Javascript zu bemühen? Ich würde es gerne komplett in PHP lösen. Danke.
Mitglied: flow.ryan
13.02.2013, aktualisiert um 08:39 Uhr
Hallo,

du musst dein Array mit dem Verzeichnisinhalt noch sortieren:


$bilder1 = asort($pics1);
#sowie
$bilder2 = asort($pics2);




Das Weiterblättern könnte so funktionieren:

$bild_zurueck = $dir2.'/'.$pics2[$i--];
$bild_weiter = $dir2.'/'.$pics2[$i++];


echo '<a href="'.$bild_zurueck.'">Zurueck</a>';

echo '<a href="'.$bild_weiter.'">Weiter</a>';


Du müsstest du nur prüfen, ob wir schon am Anfang bzw. am Ende des Arrays angelangt sind und dementsprechend (am Anfang z.B. nur noch Weiter) anzeigen lassen.

Gruß,
Florian
Bitte warten ..
Mitglied: Jochem
13.02.2013 um 09:00 Uhr
Moin,

merci für den Denkanstoß: Array sortieren, hätte ich auch drauf kommen können .

Das mit dem Blättern versuch ich mal einzubauen. Eine Lösung fürs Blättern mit "Überlauf" am einen oder anderen Ende habe ich schon im Kopf. Danke.

Gruß J chem
Bitte warten ..
Mitglied: flow.ryan
13.02.2013 um 09:10 Uhr
Super. Freut mich, dass ich dir helfen konnte.

Magst du freundlicherweise die Frage dann als "gelöst" markieren?

Gruß,
Florian
Bitte warten ..
Mitglied: Jochem
13.02.2013 um 09:35 Uhr
Moin,

so ganz ok war das noch nicht:

asort() sortiert ein Array, soweit, sogut. Allerdings ist der Rückgabewert boolean, eine Zuordnung
01.
$array2 = asort($array1):
liefert nicht das gewünschte Ergebnis. $array2 ist nach dem Aufruf leer.

Auch
01.
asort($array1);
führt nicht zum Erfolg. Der Inhalt ist weiterhin unsortiert.

Aber mit
01.
sort($array1);
hat es so funktioniert, daß
1. die Reihenfolge der Bilder in der Album-Ansicht nach Bildnamen sortiert ist
2. zum Thumb auch das richtige (entsprechende) Vollbild angezeigt wird.

Insoweit kann ich an die Frage einen Haken machen.

Gruß J chem
Bitte warten ..
Ähnliche Inhalte
Windows Server
Korrektur von Dateinamen
gelöst Frage von petereWindows Server2 Kommentare

Hallo, ich habe eine Unmenge an Dateien bekommen, die ungültige Zeichen im Dateinamen haben (z.B. +, sonst ist mir ...

Batch & Shell
Finden von (fast) gleichen Dateinamen, Ändern von Dateinamen
gelöst Frage von internet2107Batch & Shell8 Kommentare

Ich habe leider mal wieder eine etwas knifflige Sache. Aktuell suche ich in Verzeichnissen nach Dateien mit gleichen Namen ...

PHP
PHP statements mit PHp erzeugen
gelöst Frage von LorderichPHP4 Kommentare

Hallo zusammen, ich habe eine Datei, in welcher per switch und case die Webseiten definiert werden, welche bei Aufruf ...

Outlook & Mail
Outlook 2010 - Sortiert - Zeigt an nur nach Vornamen - trotz festgelegter Sortierreihenfolge nach Nachnamen
Frage von volkspolizeiOutlook & Mail2 Kommentare

Hallo an alle, langsam verzweifel ich Meine IST-Situation stellt sich so dar, dass ich alle Vornamen meiner Kontakte wissen ...

Neue Wissensbeiträge
Datenschutz

Weitere Inforamtionen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 5 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 7 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 10 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Erkennung und -Abwehr

Sicherheitslücke Spectre und Meltdown: Status prüfen

Anleitung von Frank vor 16 StundenErkennung und -Abwehr2 Kommentare

Nach all den Updates der letzten Woche sollte man unbedingt auch den Status prüfen, ob die Sicherheitslücken Spectre, Meltdown ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1017 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...