Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Sortowanie listy plików według daty dodania, Jak posortować liste plików według daty ?
noobek21
post 28.09.2009, 20:34:40
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 28.09.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował noobek21 28.09.2009, 20:49:29


--------------------
Tłumiki Warszawa
Go to the top of the page
+Quote Post
piotrooo89
post 28.09.2009, 20:54:40
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ja na Twoim miejscu ułatwiłbym sobie to używając glob, filemtime, foreach i tablic.

Ten post edytował piotrooo89 28.09.2009, 20:54:50


--------------------
Go to the top of the page
+Quote Post
noobek21
post 28.09.2009, 23:52:53
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 28.09.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował noobek21 28.09.2009, 23:59:16


--------------------
Tłumiki Warszawa
Go to the top of the page
+Quote Post
piotrooo89
post 29.09.2009, 07:10:04
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




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 ) )


Ten post edytował piotrooo89 29.09.2009, 07:46:27


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.05.2025 - 07:04