Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sortowanie funkcji dir()
Forum PHP.pl > Forum > Przedszkole
-Jakub-
mam skrypt który otwiera katalog i wylistowuje wszystkie pliki. niestety sa one pomieszane:

filename: 10.jpg
filename: 29.jpg
filename: 16.jpg
filename: 28.jpg
filename: 33.jpg
filename: 14.jpg
filename: 37.jpg
filename: 30.jpg
filename: delfin9.jpg
filename: delfin7.jpg
filename: 20.jpg
filename: 17.jpg

potrzebuje aby ten skrypt:

  1. <?php
  2.  
  3. $dir = dir("images/");
  4. while (($file = $dir->read()) !== false)
  5. {
  6. echo "filename: " . $file . "<br />";
  7. }$dir->close();
  8.  
  9. ?>


sortował wyniki alfabetyznie.

pozdrawiam, Jakub
Shili
Wczytuj do tablicy a następnie posortuj tablicę. Kolejność jest zależna od systemu plików, jak piszą w manualu, więc w locie raczej tego nie poprawisz korzystając ze standardowej klasy.
barthpl
A nie lepiej użyć funkcji scandir " title="Zobacz w manualu PHP" target="_manual questionmark.gif Zwraca posortowaną zawartość katalogu.
  1. <?php
  2. $filesList = scandir( './images' );
  3. foreach( $filesList as $file )
  4. echo "filename: $file <br />";
  5. ?>
Spyder
Cytat(barthpl @ 11.08.2008, 15:22:17 ) *
A nie lepiej użyć funkcji scandir " title="Zobacz w manualu PHP" target="_manual questionmark.gif Zwraca posortowaną zawartość katalogu.
  1. <?php
  2. $filesList = scandir( './images' );
  3. foreach( $filesList as $file )
  4. echo "filename: $file <br />";
  5. ?>


Ten skryp nie sortuje do konca poprawnie oto wynik:

filename: 1.jpg
filename: 10.jpg
filename: 11.jpg
filename: 12.jpg
filename: 2.jpg
filename: 21.jpg
filename: 3.jpg
filename: 6.jpg
filename: 7.jpg
filename: 8.JPG
filename: 9.JPG

Mam podobny skrypt:

  1. <?php
  2. $katalog="upload"; 
  3. $opna=opendir($katalog);
  4. while($element=readdir($opna)){
  5. if($element!="." && $element!=".."){
  6.  $tablica[]=$element;
  7.  }
  8.  }
  9. closedir($opna);
  10. array_multisort ($tablica, SORT_DESC);
  11. foreach ($tablica as $plik){
  12. echo $plik . '<br>';
  13. }
  14.  
  15.  
  16. $filesList = scandir( './upload' );
  17. foreach( $filesList as $file )
  18. echo "filename: $file <br />";
  19.  
  20. }
  21. $i++;
  22. }
  23.  
  24. I tez sortuje tak samo tyle ze z desc i nie mam pojecia jak to obejsc?
  25. ?>
f1xer
Ten skrypt sortuje poprawnie ale nie jest to zgodne z waszymi potrzebami smile.gif temat wyżej i jest odpowiedź zresztą jeżeli o mnie chodzi to wszędzie w windowsie i linuxie (chociaż co do linuxa nie jestem pewien, żadko używan x-ów) pliki są właśnie tak posortowane i nie przeszkadza mi to zbytnio
ayeo
Witam!

Manual - chyba o to chodzi winksmiley.jpg

Pozdrawiam!
pyro
  1. <?php
  2. $filesList = scandir( './images' );
  3. // tutaj używasz dowolnych funkcji sortujących tablicę, sort(), asort() itd.
  4. foreach( $filesList as $file )
  5. echo "filename: $file <br />";
  6. ?>
-jakub-
na yoyo.pl ten skrypt niestety nie działa, pewnie maja nieaktualna wersje php.

pozwole sobie wstawić caly skrypt tktóry napisałem:

  1. <?php
  2. echo "<br><br>";
  3. include "images/naglowek.html";
  4. echo "<br><br>";
  5. $katalog = @dir('images/') or die ("Nie można listować");
  6.  
  7. while ($plik_kat = $katalog->read())
  8. {
  9. IF(strpos($plik_kat, '.jpg') or strpos($plik_kat, '.png') or strpos($plik_kat, '.gif'))
  10. {
  11. echo "<img src='images/$plik_kat' border='1' " ;
  12. echo "<br>" ;
  13.  
  14. $tekst = "$plik_kat";
  15.  
  16. if (strpos($tekst, '.jpg'))
  17. {
  18. $wynik = str_replace(".jpg", ".txt", $tekst);
  19. }
  20. if (strpos($tekst, '.gif'))
  21. {
  22. $wynik = str_replace(".gif", ".txt", $tekst);
  23. }
  24. if (strpos($tekst, '.png'))
  25. {
  26. $wynik = str_replace(".png", ".txt", $tekst);
  27. }
  28.  
  29.  
  30.  
  31. $nazwa_pliku = '/sciezka/do/pliku.txt';
  32.  
  33. if (file_exists("images/$wynik")) {
  34. echo "<br />";
  35. include "images/$wynik";
  36. echo "<br /><br />";
  37. } else {
  38. echo "<br>" ;
  39. }
  40.  
  41.  
  42. }
  43. }
  44. $katalog->close();
  45. ?>


ma on za zadanie wyszukiwać zdjęcia, oraz pliki txt o tej samej nazwie co dane zdjęcie. jeśli znajdzie txt (komentarz do zdjęcia) umieszcza go pod zdjęciem.

no i niestety bardzo zależy mi aby zdjęcia były posortowane według nazwy ale nie wiem jak to zrobić bo w tematyce php, fakt faktem, raczkuje.
Spyder
Cytat(pyro @ 12.08.2008, 07:20:55 ) *
  1. <?php
  2. $filesList = scandir( './images' );
  3. // tutaj używasz dowolnych funkcji sortujących tablicę, sort(), asort() itd.
  4. foreach( $filesList as $file )
  5. echo "filename: $file <br />";
  6. ?>


Funkcje podane w przykladzie nie sortowaly prawidlowo wunik byl taki jak podalem wyzej jedyna opcja bylo cos takiego:

  1. <?php
  2. $filesList = scandir( 'upload' );
  3. array_multisort($filesList, SORT_NUMERIC, SORT_DESC);
  4. foreach( $filesList as $file )
  5. echo "filename: $file <br />";
  6. ?>


I to dziala winksmiley.jpg
-Jakub-
w jaki sposób zapisać w tablicy wyniki tego skryptu?

  1. <?php
  2.  
  3. $dir = dir("images/");
  4. while (($file = $dir->read()) !== false)
  5. {
  6. echo "filename: " . $file . "<br />";
  7. }$dir->close();
  8.  
  9. ?>
Spyder
Cytat(-Jakub- @ 12.08.2008, 09:17:03 ) *
w jaki sposób zapisać w tablicy wyniki tego skryptu?

  1. <?php
  2.  
  3. $dir = dir("images/");
  4. while (($file = $dir->read()) !== false)
  5. {
  6. echo "filename: " . $file . "<br />";
  7. }$dir->close();
  8.  
  9. ?>


Lepiej skozystaj z tego skryptu:

http://forum.php.pl/PHPSortowanie_plikow_w...gu_t100298.html

wywala niepotrzebne kropki i sortuje w tablicy.
-Jakub-
ok, poradziłem sobie z problemem.

tutaj zamieszczam skrypt mojej prostej galerii która wyszukuje zdjęcia i pliki tekstowe o tej samej nazwie co zdjęcie, z folderu images i wyświetla w formie prostej galerii z podpisami. ( mój pierwszy skrytp )

  1. <?
  2. //sprawdzenie ile plików jest w katalogu
  3.  
  4. $katalog='images/';
  5. $kat=opendir($katalog);
  6. $ile=0;
  7. while($plik=readdir($kat)) {
  8. $ile++;
  9. }
  10. $ileplikow = $ile;
  11.  
  12. //otworzenie katalogu, odczytanie plików i zapisanie ich w tablicy
  13. $uchwyt = opendir('images/');
  14. while ($plik = readdir($uchwyt))
  15. {
  16.  $pliki[] = $plik;
  17. }
  18.  
  19. closedir($uchwyt);
  20.  
  21. //sortowanie plików
  22.  
  23. array_multisort ($pliki, SORT_REGULAR, SORT_ASC);
  24.  
  25. //wyświetlenie tablicy
  26. for ($i = 0; $i<$ileplikow; $i++)
  27. {
  28. //sprawdzenie czy plik jest plikiem graficznym
  29. IF(strpos($pliki[$i], '.jpg') or strpos($pliki[$i], '.png') or strpos($pliki[$i], '.gif'))
  30.  
  31. {
  32.  //wyświetlenie zdjęcia
  33. echo "<img src='images/$pliki[$i]' border='1' " ;
  34. echo "<br>" ;
  35.  
  36.  //część odpowiedzialna za umieszczenie komentarza pod zdjęciem
  37. $tekst = "$pliki[$i]";
  38.  
  39. if (strpos($tekst, '.jpg')) //sprawdzenienie rozszerzenia
  40. {
  41. $wynik = str_replace(".jpg", ".txt", $tekst); //stworzenie zmiennej $wynik która ma postać "nazwazdjęcia.txt"
  42. }
  43. if (strpos($tekst, '.gif'))
  44. {
  45. $wynik = str_replace(".gif", ".txt", $tekst);
  46. }
  47. if (strpos($tekst, '.png'))
  48. {
  49. $wynik = str_replace(".png", ".txt", $tekst);
  50. }
  51.  
  52. //sprawdzenie czy plik o nazwie takiej jak zdjęcie i rozszerzeniu .txt istnieje
  53. if (file_exists("images/$wynik")) 
  54. {
  55. echo "<br />";
  56. include "images/$wynik"; // jeśli istnieje to włączenie tego pliku pod zdjęcie
  57. echo "<br /><br />";
  58. } 
  59. else 
  60. {
  61. echo "<br>" ; //jeśli nie, łamanie linni
  62. }
  63. }
  64. }
  65.  
  66.  
  67.  
  68. ?>


podziękowania dla Shiliza pomysł na sortowanie, oraz dla Spydera za funkcje array_multisort smile.gif
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.