Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Sortowanie listy plików według daty dodania
Forum PHP.pl > Forum > Przedszkole
noobek21
Chcę dodać do tego skryptu sortowanie według daty.
  1. <?
  2. $plik="ogloszenia";
  3. $dir=opendir($plik);
  4. $lista="<UL>";
  5.  
  6. while($nazwa=readdir($dir))
  7. {
  8. if(($nazwa!=".")&&($nazwa!=".."))
  9. {
  10.  
  11. $id=date ("Ymdhis", filemtime("ogloszenia/$nazwa"));
  12. $s= str_replace('.php', ' ', $nazwa);
  13. $lista.='<a id=".$id." href="ogloszenia/'."$nazwa".'">'.$s.'<br></a>'.date ("d-m-Y H:i:s", filemtime("ogloszenia/$nazwa")).'<br>';
  14. }
  15. }
  16.  
  17. $lista.="</UL>";
  18.  
  19. closedir($dir);
  20.  
  21. $s= str_replace('.php', ' ', $lista);
  22.  
  23. echo $lista;
  24. ?>


I teraz jak dodać do tego sortowanie plików według ID ? wstydnis.gif
piotrooo89
ja na Twoim miejscu ułatwiłbym sobie to używając glob, filemtime, foreach i tablic.
noobek21
hmmm.......
  1. <?
  2. $plik="ogloszenia";
  3. $dir=opendir($plik);
  4. $lista="<UL>";
  5.  
  6. while($nazwa=readdir($dir))
  7. {
  8. if(($nazwa!=".")&&($nazwa!=".."))
  9. {
  10.  
  11. $id=date ("Ymdhis", filemtime("ogloszenia/$nazwa"));
  12. $tablica=array ("$nazwa"=>"$id");
  13. asort($tablica);
  14.  
  15. foreach ($tablica as $klucz => $wartosc )
  16. {
  17. echo $klucz.'<b>'.$wartosc.'</b><br>';
  18. }
  19. }
  20.  
  21. $lista.="</UL>";
  22.  
  23. closedir($dir);
  24.  
  25. ?>


O coś takiego chodzi? Lecz nadal nic mi to nie dało. Bo pliki nie sortują się sadsmiley02.gif
I do tego nie wiem za bardzo po co mi tu funkcja glob i gdzie mam jej użyć worriedsmiley.gif

Jak jej użyje do znalezienia *php to mi wywali wszystkie pliki na serwerze,a chce aby pokazały się tylko
te w folderze ogłoszenia.
piotrooo89
więc opiszę to w ten sposób. glob stworzy Ci tablice z wszystkich plików, następnie iteruj po niej foreach'em wraz z użyciem funkcji filemtime, dane zapisuj również do tablicy (najlepiej wielowymiarowej), w wyniku otrzymasz tablice oraz nazwy pliku wraz z jej datą. struktura tablicy może wyglądać tak:

$tab['data'][0]='nazwa_pliku1';
$tab['data'][1]='nazwa_pliku2';
itd.

później już tylko jakieś sortowanie tablic wielowymiarowych po dacie i gotowe.

//EDIT

postanowiłem się pobawić i zrobiłem Ci coś takiego, myślę że Ci się przyda.

  1. $pliki = glob ('*.txt');
  2. $i=0;
  3. foreach($pliki as $key => $value)
  4. {
  5. $data = date ("Y-m-d H:i:s", filemtime($value));
  6. $tab[$i]['data'] = $data;
  7. $tab[$i]['plik'] = $value;
  8. $i++;
  9. }
  10. print_r($tab);
  11. foreach ($tab as $klucz => $wiersz)
  12. {
  13. $date[$klucz] = $wiersz['data'];
  14. $plik[$klucz] = $wiersz['plik'];
  15. }
  16. array_multisort($date, SORT_DESC, $plik, SORT_DESC, $tab);
  17. print_r($tab);


tak wyglądają pliki nieposortowane wg daty:
Kod
Array (
[0] => Array (
    [data] => 2009-09-29 08:15:47
    [plik] => 1.txt )
[1] => Array (
    [data] => 2009-09-29 08:15:52
    [plik] => 2.txt )
[2] => Array (
    [data] => 2009-09-29 08:25:13
    [plik] => 3.txt )
[3] => Array (
    [data] => 2009-09-29 08:39:12
    [plik] => 4.txt )
[4] => Array (
    [data] => 2009-09-29 08:38:58
    [plik] => 5.txt ) )


a tak po sortowaniu wg daty:
Kod
Array (
[0] => Array (
    [data] => 2009-09-29 08:39:12
    [plik] => 4.txt )
[1] => Array (
    [data] => 2009-09-29 08:38:58
    [plik] => 5.txt )
[2] => Array (
    [data] => 2009-09-29 08:25:13
    [plik] => 3.txt )
[3] => Array (
    [data] => 2009-09-29 08:15:52
    [plik] => 2.txt )
[4] => Array (
    [data] => 2009-09-29 08:15:47
    [plik] => 1.txt ) )
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.