![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 1.11.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witajcie!
Napisałem skrypcik, który odczytuje nazwy plików z wybranego folderu (np. 05112004.log), rozbija nazwy na czynniki pierwsze, aby potem złożyć je do fomatu daty (np. 05.11.2004)... Niestety wyświetla mi pozycje nie w takiej kolejności jakbym tego chciał, lecz w zależności od ustawień systemowych sortowania plików wg różnych kryteriów... I moje pytanie brzmi: jak posortować nazwy plików w określonej kolejności? Oto skrócony kod skryptu, a pod nim opis działania: Kod <?php $dir = "."; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if ($file != "." && $file != ".." && $file != "readstat.php" && $file != "addstat.php" && $file != "viewstat.php") { $exp = explode(".", $file); $md = md5($exp[0]); $s1 = substr($exp[0], 0, 2); $s2 = substr($exp[0], 2, 2); $s3 = substr($exp[0], 4, 4); echo("<a href=\"viewstat.php?ID=$exp[0]\">$s1.$s2.$s3 $file</a><br />"); } } closedir($dh); } } ?> Całość działa w ten sposób, że odczytuje z danego folderu pliki z logami statystyk z każdego dnia, np. 03112004.log, 04112004.log... itp... gdzie ciąg znaków przed rozszerzeniem pliku to najzwyklejsza data w formacie ddmmrr... Za pomocą funkcji explode() rozbijam poszczególne nazwy plików na człon daty i rozszerzenie. Następnie z ciągu ddmmrr wyciągam za pomocą funkcji substr() fragmenty ciągu - odpowiednio: 2 pierwsze znaki (na dzień), 2 kolejne (na miesiąc) i 4 następne (na rok). Potem między te elementy w echo() wstawiam kropki aby stworzyć najzwyklejszy link wyświetlający datę wejścia na serwis... Niestety w przeglądarce dostaję coś takiego: Kod 02.11.2004 04.11.2004 03.11.2004 05.11.2004 06.11.2004 itp... Jak zmodyfikować ten skrypt aby posortować wyświetlane daty np. rosnąco lub malejąco, a nie chaotycznie (vel według ustawień systemowych) ![]() Z pozdrowieniami Adrian -------------------- EnigmaCretu.Com >>
|
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Zapisuj daty jako znacznik czasu Unix'a. Będzie ci je potem łatwo sortowwać (jako zwykłe liczby) i będziesz miał większy wachlarz mozliwości przy ich formatowaniu.
Znacznik Unix'a = brak problemu. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 1.11.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Hmmm...
Ja myślałem o użyciu może tablic... Ale niestety nie znam ich na tyle dobrze, żeby je ulokować w tym skrypcie... -------------------- EnigmaCretu.Com >>
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 636 Pomógł: 0 Dołączył: 22.10.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Ciezko jest cokolwiek sortowac bez uzycia tablic
![]() mike_mech: mktime" title="Zobacz w manualu PHP" target="_manual ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.06.2025 - 12:49 |