Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> generowanie listy plików - sortowanie rezultatów
wolguy
post
Post #1





Grupa: Zarejestrowani
Postów: 219
Pomógł: 10
Dołączył: 9.01.2005

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


Witam,
mam tutaj taki skrypcik:

  1. <?php
  2.  
  3. $dir = &#092;"katalog/\";
  4. function printDir($dir)
  5. {
  6. $fd = opendir($dir);
  7. if(!$fd) return false;
  8. while (($file = readdir($fd)) !== false){
  9.  if($file != &#092;".\" && $file != \"..\"){
  10. echo(&#092;"$file<BR>\");
  11.  }
  12. }
  13. closedir($fd);
  14. }
  15. printDir($dir);
  16. ?>


który generuję listę plików z katalogu ze zmiennej $dir.
Mam problem z określeniem jak ma być prezentowana zawartość kalalogu.
Na serwerze z Windowsem lista plików jest sortowana alfabetycznie, czyli plik na literkę "a" jest pierwszy na liśce, a na "z" jest ostatni. Natomiast pod Linuxem według daty wysłania pliku na serwer.
Czy da się dodać do tego skryptu jakąs opcję żeby pod Linuxem wyniki były sortowane alfabetycznie, ale od końca? Np że plik którego nazwa zaczyna sie na literke "z" będzie pierwszy na liście, a ten na "a" będzie ostatni?

Błagam! Pomóżcie mili Panowie (albo może znajdzie sie jakaś miła Pani?) smile.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
crash
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Utwórz sobie tablicę ze spisem plików z katalogu a następnie posortuj tą tablicę tak jak chcesz.


--------------------
Go to the top of the page
+Quote Post
hwao
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Dobra to moze ja pokaze co tam zlozylem...
Beda potrzebne 3 pliczki dam do nich linki zeby nie zasmiecac tematu smile.gif na koniec pokaze jak to uzyc smile.gif

http://windforce.strefaphp.net/code/?file=...list.class.php5
http://windforce.strefaphp.net/code/?file=...ldir.class.php5
http://windforce.strefaphp.net/code/?file=...List.class.php5 (do sortowania intow mam inna, czyli wg wielkosci albo dat.)

Teraz zalaczamy to wszytko do 1 pliku i w nim piszemy

  1. <?php
  2.  
  3. $sortujWg = 'name'; // mozesz sobie z geta to pobrac np
  4. $sortujTyp = 'asc'; // Tutaj czyli w jakis sposob srotowac asc/desc
  5. $path = './'; // sciezka jaka ma poparsowac:)
  6.  
  7. // Tablica co jak sortowac (umnie jeszcze tu byla wielkosc i data dlatego ta tablica
  8. $sortObject = array( 
  9.  'name' => 'stringSortFileList',
  10.  'type' => 'stringSortFileList'
  11. );
  12.  
  13. // --- tu sie zaczyna dzialnie
  14. $dir = new $sortObject[$sortujWg]( new LocalDir( $path ), $sortujWg, $sortujTyp ); // utworzenie obiekt
  15. $dir->read(); // wczytuje sobie pliki
  16.  
  17. while( $file = $dir->getNext() ) { // wydobywanie po koleji
  18.  echo '<pre>'.print_r( $file, true ).'</pre>'; // wysweitlenie
  19. }
  20.  
  21. $dir->close();
  22.  
  23. ?>

No w sumie to tak dziala...
Jak chcesz prosciej to tam masz w klasie sortujacej (ta 3cia) jak uzylem array_multisort smile.gif ktora dziala dokladnie tak jak w mysql Order by smile.gif
Go to the top of the page
+Quote Post
crash
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Obadałbym to, ale gdzie źródło klasy SortFileList?


--------------------
Go to the top of the page
+Quote Post
hwao
post
Post #5


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Cytat(crashu @ 2005-07-01 20:25:54)
Obadałbym to, ale gdzie źródło klasy SortFileList?

Sorka zapomnialem o niej smile.gif a to dlatego ze pratycznie tylko dostarcza wygladu winksmiley.jpg moze i lepiej by to bylo na interfejsach zrobic:) (przynajmniej czesc, potem bede musial przepisac zeby uczyc intrfejsow smile.gif ale to nie wiele zmian)

http://windforce.strefaphp.net/code/?file=...list.class.php5

Zaleta tego jest ze zrodlo danych mozna sobie dopisywac dowolnie a wszytko bedzie dzialac czyli, np piszemy na tym galerie ktora pokazuje pliki z serwera, dopisuje jedna klase i moge juz np wyswietli galerie plikow z jakiegos ftp smile.gif (w sumie mam napisana juz ta klase do ftp smile.gif i dziala splicznie smile.gif )
Go to the top of the page
+Quote Post
crash
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Spoko działa, ale wymagało jednej poprawki żeby w ogóle ruszyło. php rzucił Fatal error przy array_pop bezpośrednio na explode() (24 linia filelist.class.php)...


--------------------
Go to the top of the page
+Quote Post
wolguy
post
Post #7





Grupa: Zarejestrowani
Postów: 219
Pomógł: 10
Dołączył: 9.01.2005

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


A może spróbujemy jeszcze na tym moim kodzie, w prosty sposób.
Próbowałem z tablicą ale coś cienko mi wychodzi sad.gif

  1. <?php
  2.  
  3. $dir = &#092;"katalog/\";
  4. function printDir($dir)
  5. {
  6. $fd = opendir($dir);
  7. if(!$fd) return false;
  8. while (($file = readdir($fd)) !== false){
  9.  if($file != &#092;".\" && $file != \"..\"){
  10.  
  11.  $tablica[$file] = $file;
  12.  krsort($tablica);
  13.  
  14. while (list ($key, $val) = each ($tablica)) { // tak dla sprawdzenia
  15. echo &#092;"$key = $valn\";
  16. }
  17.  
  18.  }
  19. }
  20. closedir($fd);
  21. }
  22. printDir($dir);
  23. ?>


i po tym zamiast trzech kluczy mam aż sześć.
O co chodzi?
Go to the top of the page
+Quote Post
crash
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Nie wiem co ty próbujesz tak stworzyć smile.gif
  1. <?php
  2. $dir = './';
  3. function printDir($dir)
  4. {
  5. $fd = opendir($dir);
  6. if(!$fd) return false;
  7. while(($file = readdir($fd)) !== false)
  8. {
  9. if($file != &#092;".\" && $file != \"..\")
  10. {
  11.  $tablica[] = $file;
  12. }
  13.  }
  14.  closedir($fd);
  15.  rsort($tablica);
  16.  
  17.  foreach($tablica as $file)
  18.  {
  19. echo &#092;"$filen\";
  20.  }
  21. }
  22. printDir($dir);
  23. ?>


--------------------
Go to the top of the page
+Quote Post
wolguy
post
Post #9





Grupa: Zarejestrowani
Postów: 219
Pomógł: 10
Dołączył: 9.01.2005

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


Zamierzam zrobić skrypt na system newsów, bez MySQLa.
W katalogu 'news' będe miał foldery - każdy na inny news. Foldery będą miały jakąś "przyjazną nazwę". W każdym folderze z newsem będzie plik 'date.txt', gdzie w formacie 'Y-m-d" będzie zapisywana data newsa. Za pomocą funckji file_get_contents będę odczxytywał zawartość 'date.txt', po czym wszystkie daty będą sortowane i będzie generowana lista newsów.

Robie to troche niestandardowo, ale taki już jestem. Poza tym mam dopiero 16 lat i praktycznie zaczynam swoją "przygodę" z php. Dziękuję wszystkim za pomoc.
Go to the top of the page
+Quote Post
crash
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


smile.gif Nie pytam co ty chcesz zrobić w szerszym zakresie, a tylko co ten twój skrypt z poprzedniego postu miał niby robić. Nie odbiegaj od tematu, napisz czy już wszystko rozumiesz i działa jak powinno.


--------------------
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 Aktualny czas: 22.08.2025 - 10:21