Nein, in dem Array sind nur Dateien, die mit png, jpg oder jpeg enden...
Ich nehm mal an, da wird auch das Problem liegen.
Hab folgenden Script der die jpg-Dateien eines Ordners nach dem Datum sortieren soll:
Also kann ich davon ausgehen, dass im Array $arr alle Dateinamen sortiert nach dem Datum drin sind? Oder nicht?PHP-Code:$file = array();
chdir($img_root.$_GET["kat"]);
$fd = dir($img_root.$_GET["kat"]);
while($v = $fd->read()) {
if(is_file($v) && (strtolower(substr($v,-3)) == "png" || strtolower(substr($v,-3)) == "jpg" || strtolower(substr($v,-4)) == "jpeg")) {
$key = filemtime($v);
$file[$key] = $v;
}
}
ksort($file);
$arr = array();
$arr = array_reverse($file);
$fd->close();
Es gibt nämlich ein Problem. In manchen Ordnern werden nicht alle Bilder angezeigt. ich hab da einen da sind 5 Bilder drin es werden aber nur 3 angezeigt. in anderen Ordnern wiederum werden alle angezeigt. Nach dem Datum wird allerdings immer sortiert. ich verstehs einfach nicht.
Geändert von samuelshp (25.02.2005 um 22:04 Uhr)
Nein, in dem Array sind nur Dateien, die mit png, jpg oder jpeg enden...
Ich nehm mal an, da wird auch das Problem liegen.
Zwei Dinge sind Unbestreitbar:Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
es sind ja 5 dateien mit der Endung jpg drin!
Noch was, wenn ich filectime verwende, dann wird nur 1 Bild ausgegeben.
Also mir erscheint das alles mehr als unlogisch.![]()
Geändert von samuelshp (25.02.2005 um 20:55 Uhr)
Irgendwie gibts $fd2 bei dir gar nicht, dann sollte dass is_file nicht laufen [wenn chdir darauf keinen einfluss nimmt], da php die Datei dann im falschen Verzeichniss sucht.
Naja:
Wäre so mein funktionaler LösungsvorschlagPHP-Code:<?php
//Die eigentliche Funktion
function foobar( $dir )
{
//Initalisierung eines neuen Arrays
$array = array();
//Öffnen eines Verzeichnisses (ohne weitere Sicherheitsüberprüfungen)
$opendir = opendir( $dir );
//Auslesen des Verzeichnisses
while( $file = readdir( $opendir ) ):
//Der absolute Pfad zur Datei
$absolute = $dir . DIRECTORY_SEPARATOR . $file;
//Hinzufügen, wenn es das ist, was wir gesucht haben
if( is_file( $absolute ) && endsWith( $file, array('.jpg','.jpeg','.png') ) )
$array[ filemtime( $absolute ) ] = $file;
endwhile;
//Schließen des Verzeichnisses
closedir( $opendir );
//Sortieren wir das ganze mal
uksort( $array, 'cmp' );
//Rückgabe
return $array;
}
//Hilfsfunktionen
function endsWith( $file, $array )
{
foreach( $array as $extension )
if( strtolower( substr( $file , -strlen( $extension ) ) ) == $extension )
return true;
return false;
}
function cmp( $a, $b )
{
if( $a == $b ) return 0;
return( $a > $b ) ? -1 : 1;
}
//Möglicher Funktionsaufruf
foreach( foobar( $img_root . $_GET["kat"] ) as $timestamp => $bildname )
echo $timestamp.': '.$bildname."<br />";
?>
Zwei Dinge sind Unbestreitbar:Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Oh, das mit $fd2 hab ich aus versehen vergessen wieder hier im Forum umzuändern. (habs verändert) Danke erstmal für die Arbeit - wird allerdings ein ganzes Stück dauern bis ich das in meinen komplexen Aufbau eingebaut habe.
Aber ich noch was sehr interessantes herausgefunden:
Ich hatte ja gesagt von 5 Bildern werden nur 3 ausgegeben. Die 5 Dateien haben folgende Erstellungsdaten: jeweils 09.11.2004 und dann das interessant:
1.Datei: 12:21 -> wird angezeigt
2.Datei: 12:22 -> wird angezeigt
3.Datei: 12:22
4.Datei: 12:22
5.Datei: 12:24 -> wird angezeigt
Ist doch auffällig oder?Kann man da vielleicht doch eine einfachere Lösung finden?
Geändert von samuelshp (25.02.2005 um 22:05 Uhr)
Was ist denn noch einfacher als Funktionen? Die packst die drei Funktion irgendwo hin in der PHP Datei, und brauchst dann nur noch
An der Stelle, an der du die Ausgabe haben möchtest, eingebenPHP-Code:foreach( foobar( $img_root . $_GET["kat"] ) as $timestamp => $bildname )
echo $timestamp.': '.$bildname."<br />";
Naja, ich nehm mal an, deine Sortierfunktion wird etwas verhauen, kannst es ja mal mit uksort in assoc with cmp versuchen.
Zwei Dinge sind Unbestreitbar:Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Ein Array-Eintrag mit gleicher Zeit überschreibt den Dateinamen ($file) des schon bestehenden Eintrags:
$array[ filemtime( $absolute ) ] = $file;
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]
use my HTML-Tester
Motto'06: Mut zur deutschen Sprache!
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)