Seite 1 von 2

nach datum sortieren

Verfasst: 23.04.2007 15:47
von kolja
tach allerseits

hier gibt es oft ganz kurze antworten mit nem link auf selphp oder so
und weil ich es selbst nicht finde :oops:

aber darum geht es:

ich habe einen ordner voller ordner voller bilder:

Code: Alles auswählen

fotos/
fotos/album1
fotos/album1/foto1 bis fot030

fotos/album2
fotos/album2/foto1 bis fot030
nun möchte ich aus dem neusten album (der zuletzt erstellte ordner)
zwei zufällige bilder anzeigen

nur häge ich schon an der stelle wo php den neusten ordner auswählen soll..

ich habe ein array, welches so aussieht:

Code: Alles auswählen

Array ( [0] => NeuerOrdner [1] => test [2] => wert [3] => ralph [4] => Flyer )
nur wie bekomme ich da den neusten nach vorne ??

kolja

wie gesagt, hab schn mein dickes buch gewälzt
und auch schon gegeoogelt aber nicht einmal einen ansatzt gefunden...

Verfasst: 23.04.2007 16:07
von Miriam
Weil wir gerade bei den Links sind ---> Kick

Verfasst: 23.04.2007 16:11
von kolja
danke, aber warum ist das so umständlich ??

erst das datum auslesen, dannwieder zurück zum namen
und den dann erst ausgeben...

naja ich setzte mich mal drann

kolja

Verfasst: 23.04.2007 16:17
von Miriam
Hm, der Neueste ist doch durch das Datum zum Neuesten geworden, nicht durch den Namen.

Verfasst: 23.04.2007 17:33
von kolja
also entweder spinnt phpbb.de mein rechner oder das ganze internet...
das ist das dritte mal das ich versuche diesen beitrag zu schreiben :-?

aber BTT:

mein array habe ich um die timestampangaben ergänzt,
und sortiert!

nun sieht die ausgabe so aus:

Code: Alles auswählen

Array ( [4] => Array ( [1177284668] => Flyer ) [3] => Array ( [1177066156] => ralph ) [2] => Array ( [1176862058] => wert ) [1] => Array ( [1176860769] => test ) [0] => Array ( [1176860860] => NeuerOrdner ) )  
nur wie gebe ich jetzt den letzten wert (in diesem falle "Flyer") aus ??

kolja

edit ich bemerke gerade, dass meine ausgabe nicht so aussieht,
wie die die ich in den beispielen immer sehe...

aber soviel kann hier doch nicht falsch sein:

Code: Alles auswählen

for($i=0;$i<count($verzeichnisinhalt);$i++)
{ 
 $array[$i] = array( filemtime($verzeichnisinhalt[$i]) =>  $verzeichnisinhalt[$i]);
}
kolja

Verfasst: 23.04.2007 18:32
von Miriam
Warum packst Du nicht alles in ein Array nach dem Muster

Code: Alles auswählen

$feld=array('dateiname1' => 'datum1', 'Dateiname2' => 'datum2');
dann sortierst Du das Array mit

Code: Alles auswählen

asort($feld);
und flippst es mit array_flip()
und schnappst Dir das letzte Element des Array $feld mit:

Code: Alles auswählen

$last =array_pop($feld);
da Du aber nun das Array anders herum aufgebaut hast, musst Du dann eben zweimal array_flip() benutzen.

Bsp.:

Code: Alles auswählen

<?php
$feld = Array ( '1177284668' => 'Flyer', '1177066156' => 'ralph', '1176862058' => 'wert', '1176860769' => 'test', '1176860860' => 'NeuerOrdner');
$feld = array_flip($feld);
asort($feld);
$feld = array_flip($feld);
$last = array_pop($feld);
print($last);
?>
Kannst es aber auch anders machen.

Verfasst: 23.04.2007 18:47
von Pyramide

Code: Alles auswählen

$newest_time = $newest_file = 0;
if ($dir = opendir('bilder'))
{
    while (($file = readdir($dir)) !== false)
    {
        if(filemtime($file) > $newest_time)
        {
            $newest_file = $file;
            $newest_time = filemtime($file);
        }
    }
    closedir($dh);
}

Verfasst: 23.04.2007 19:05
von kolja
Miriam hat geschrieben:Warum packst Du nicht alles in ein Array nach dem Muster

Code: Alles auswählen

$feld=array('dateiname1' => 'datum1', 'Dateiname2' => 'datum2');
weil ich leider nicht verstehe wie ich das machen soll...

ich muss doch irgendwie in der for-schleife bleiben, oder nicht ?

kolja

Verfasst: 23.04.2007 19:07
von Miriam

Code: Alles auswählen

closedir($dh);
???

Und was ist mit den Verzeichnissen?

Verfasst: 23.04.2007 19:11
von kolja
@ pyramide

ich glaub das ist was ich gesucht habe :-)

ist nur schade um miriams bemühungen :roll:

danke euch beiden

kolja