Bildergalerie, Inhalt eines Verzeichnisses sortieren

ludz

Erfahrenes Mitglied
Hallihallo!

Folgendes Problem:

Ich habe eine Bildergalerie in PHP geschrieben, d.h. nur eine ganz einfache, es geht einfach nur um die Dynamik, die mit PHP möglich ist. Das Script liest den Inhalt eines bestimmten Verzeichnis mit readdir($dir) aus und gibt dann die Bilder in einer Tabelle aus (Für jedes Bild eine Zelle). Leider werden die Dateinamen der Bilder bei readdir nicht sortiert, d.h. die Bilder stehen mehr oder weniger konfus in der Tabelle, d.h. ein Bild was z.B. "zzz" heißt steht u.U. vor einem Bild das "aaa" heißt usw.
Meine Frage ist jetzt, wie kann ich den Inhalt des Verzeichnisses, der gelesen wurde sortieren lassen?!
Ich habe schon was versucht mit Arrays und sort() aber hat nicht so hingehauen, habt ihr sonst ne Idee?
 
Geht vielleicht einfach, nur wie weiss ich nicht!

und wenn ich nicht weiss wie, dann mache ich es so wie ichs hinbekomme (:

also:


zunächst würde ich alle bildnamen des ordners in einen array lesen.

Nun einen array erstellen: $char, mit den werten a-z

PHP:
for($i=0;$i<=24;$i++){
 foreach($arraymitbildnamen as $tmp){
  if($tmp[0] == $char[$i]){
   print "<img src=\"pfadzu$tmp\">";
   }
  }
}

habe jetzt nichts getestet, aber sollte so alphabetisch geordnet werden.

(ist aber wirklich nicht schön, vor allem weil ein bild, dass mit _ anfängt nun nicht aufgelistet wird, aber bau es dir einfach so um wie du es brauchst)
 
Auch auf die Gefahr hin, mich evtl. zu blamieren:

Es gibt gängige Sortieralgorithmen, die ich irgendwann mal in Delphi und Java durchgenommen habe: Bubble-Sort, Quick-Sort, Selection-Sort, Insertion-Sort (so hiessen sie glaub' ich). Der Quick-SOrt soll - wie der Name vermuten lässt - recht schnell sortieren. Hab' über google das hier gefunden.
Wir hatten die ALgorithmen nur auf Integer-Arrays angewandt und da ich noch relativ neu bin in PHP, weiss ich nicht, inwiefern man das auf Strings anwenden kann. Aber vielleicht hilft's ja.. :rolleyes:
 
Hmm ja sort könnte wirklich das einfachste sein, nur muss ich dafür ja die Bilder als Array haben oder nicht?
Also wie könnte ich den Inhalt des Verzeichnisses, d.h. die Bilder in ein Array lesen lassen (jedes Bild eine Nummer des Arrays!)???
 
PHP:
$open = opendir(deinorder);

while($file = readdir($open)){
 if($file != "." && $file != ".." && !is_dir($file)){
  $bilder[]=$file;
 }
}
closedir($open);



so würde ich das machen (hab zufällig gestern genau das gemacht :) )

bau noch einen preg_match check ein, meiner wird hier vom board weggeschnitten.
 
Zuletzt bearbeitet:
das von godwich ist schon richtig so. jetzt musstes nur noch sortieren und ausgeben. dafür kannste dann sort benutzen ;)
(also angenommen du hast jetzt den code von godwich vorangestellt und somit die dateinamen im array $bilder)
PHP:
sort($bilder);

foreach($bilder as $bild) {
 echo '<img src="deinpfad/' . $bild . '">';
}
 
Vielen Dank für die vielen aufschlussreichen Antworten! Ich werde das jetzt bei Gelegenheit gleich mal probieren. Müsste eigentlich klappen, bins auch mal im Kopf durchgegangen. Naja wenn trotzdem was nicht klappen sollte, dann melde ich mich nochmal...
Aber nochmal Danke an euch alle!
 
Zurück