Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sortowanie
Forum PHP.pl > Forum > PHP
john_doe
Witam,

napisałem funkcję, która zwraca zawartość katalogu. Kiedy numeruję katalogi od 1 - 9 wiadomo idą po kolei. Gdy dodam katalog o nazwie "10" ustawia się po "1" i tak też funkcja zwraca to na www. Chciałbym po kolei...
  1. function readDirectoryAudience( $path )
  2. {
  3. $files = scandir( $path );
  4. //echo count($files); // tutaj zaczątek by wypisać, że KATALOG JEST PUSTY <-----
  5.  
  6. echo '<div id="menuList"> <ul>';
  7.  
  8. if (makeBackLink($_GET['level']) != '../galleries')
  9. {
  10. echo '<li><a href="show.php?level=' . makeBackLink($_GET['level']) . '">Go back...</a></li>';
  11. } else echo '<li><a href="index.php?level=' . makeBackLink($_GET['level']) . '">Go back...</a></li>';
  12.  
  13. echo '</ul>
  14. </div><br /><br /><br />';
  15.  
  16. for( $i = 0 ; $i <= (count($files) - 1) ; $i++ )
  17. {
  18.  
  19. if( $files[$i] == '..' ) continue;
  20.  
  21. if( $files[$i] == '.' ) continue;
  22.  
  23.  
  24. if( !is_file( $path . $files[$i] ) )
  25. {
  26. if( $files[$i] == '.' ) continue;
  27.  
  28. echo '<div class="photo">';
  29.  
  30. echo '<div><a href="show.php?level=' . $path . $files[$i] . '">' . $files[$i] . '</a></div>';
  31. //<img src="/pics/jj_logo.png" alt="" />
  32. echo $files[$i] . '</div>';
  33. }
  34. else
  35. {
  36. if( substr ( $files[$i], 0, 5 ) != 'mini_' ) continue; // if isn`t a mini then continue
  37.  
  38.  
  39. echo '<div class="photo">';
  40.  
  41. echo '<div><a href="' . $path . substr( $files[$i], 5, 20 ) . '" rel="lightbox[roadtrip]">
  42.  
  43. <img src="' . $path . $files[$i] . '" />
  44. </a></div>';
  45.  
  46. echo '</div>';
  47.  
  48. }
  49.  
  50. }
  51.  
  52. }

tehaha
no to chyba normalne, przynajmniej w total commanderze też tak jest, musisz nazwać tak żeby miały 0 z przodu, czyli 01, 02, 10, 20 wtedy będą po kolei a najlepiej kilka zer żebyś przy numerze 100 nie miał znowu tej sytuacji, czyli nazwy zrobić np. 0001, 0002, 0010, 0020
wookieb
http://pl2.php.net/natsort
tehaha
szkoda, że nie znałem tej funkcji:)
john_doe
EXTRA,
dałem natsort() zaraz po wywołaniu
  1. $files = scandir( $path );


print_r zwraca ok

Array (
[0] => .
[1] => ..
[2] => 1
[4] => 2
[3] => 10
)

jednak jadąc w pętli for po $i i tak wyświetla po staremu bo klucze są nie po kolei
wookieb
To użyj foreach
john_doe
no i kosi pięknie dzięki wookieb

poniżej kod dla zainteresowanych
  1. function readDirectoryAudience( $path )
  2. {
  3. $files = scandir( $path );
  4. natsort($files); print_r($files);
  5.  
  6. echo '<div id="menuList"> <ul>';
  7.  
  8. if (makeBackLink($_GET['level']) != '../galleries')
  9. {
  10. echo '<li><a href="show.php?level=' . makeBackLink($_GET['level']) . '">Go back...</a></li>';
  11. } else echo '<li><a href="index.php?level=' . makeBackLink($_GET['level']) . '">Go back...</a></li>';
  12.  
  13. echo '</ul>
  14. </div><br /><br /><br />';
  15.  
  16. foreach( $files as $key => $value )
  17. {
  18.  
  19. if( $value == '..' ) continue;
  20.  
  21. if( $value == '.' ) continue;
  22.  
  23.  
  24. if( !is_file( $path . $value ) )
  25. {
  26. if( $value == '.' ) continue;
  27.  
  28. echo '<div class="photo">';
  29.  
  30. echo '<div><a href="show.php?level=' . $path . $value . '">' . $value . '</a></div>';
  31.  
  32. echo $value . '</div>';
  33. }
  34. else
  35. {
  36. if( substr ( $value, 0, 5 ) != 'mini_' ) continue; // if isn`t a mini then continue
  37.  
  38.  
  39. echo '<div class="photo">';
  40.  
  41. echo '<div><a href="' . $path . substr( $value, 5, 20 ) . '" rel="lightbox[roadtrip]">
  42.  
  43. <img src="' . $path . $value . '" />
  44. </a></div>';
  45.  
  46. echo '</div>';
  47.  
  48. }
  49.  
  50. }
  51.  
  52. }

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.