Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Kolejność odczytywania plików.
Forum PHP.pl > Forum > PHP
djmentos
Witam serdecznie,
mam mały problem, stworzyłem sobie prostą mini-galerię opartą o pliki, ale mam problem z alfabetycznym wczytaniem zdjęć. Kod prezentuje się tak:
  1. $dir = opendir($sciezka);
  2. while ($plik = readdir($dir)) {
  3. if (($plik != '.') && ($plik != '..') && ($plik != $gal_thumb)) {
  4.  
  5. if ( (substr($plik, 0, 1) != 'p') && (!file_exists($sciezka.'p'.$plik)) && (in_array( file_extension($plik), Array('png', 'jpeg', 'jpg', 'JPG'))) ){
  6. //ZROBIĆ THUMBNAIL!
  7. $im = thumbnail($sciezka.$plik, 100);
  8. imageToFile($im, $sciezka.'p'.$plik, 95);
  9. }
  10.  
  11. if (substr($plik, 0, 1) == 'p'){
  12. $plik2 = substr($plik, 1, strlen($plik) - 1);
  13. echo '<p class="thumbnail">'
  14. .'<a href="'.$sciezka.$plik2.'" rel="lightbox['.$_GET['view'].']">'
  15. .'<img src="'.$sciezka.$plik.'" alt="">'
  16. .'</a></p>';
  17. }
  18. }
  19. }
  20. closedir($dir);

Przykład działania znajduje się tutaj: http://www.budowa-dekoracji.pl/realizacje-gdynia70.html
I wygląda to tak, że np zdjęcie pierwsze ma nazwę z pierwszą literą 's', gdzieś w środku galerii znajduje się 'z', a na końcu 'k'. Zależałoby mi na tym, by uporządkować to trochę.
Kshyhoo
Poszukaj na forum, bo było.
Musisz posortować tablicę, po przeczytaniu katalogu winksmiley.jpg Coś w stylu:
  1. if ($dir_handle = opendir($base_dir."/".$path)) {
  2. while ($file = readdir($dir_handle)) {
  3. $f[$file] = $file;
  4. }
  5. ksort($f);
  6. foreach($f as $file) {
  7. chdir($base_dir."/".$path);
  8. if (($file != ".") && ($file != "..")) {
  9. if (is_file($file)) {

Czyli ksort($f);
kalmaceta
można zmienić drugi if na coś takiego, albo można to, jeszcze lepiej, przepisać

  1. $galeria = array();
  2. if (substr($plik, 0, 1) == 'p'){
  3. $galeria[$sciezka.$plik] = $sciezka.$plik2;
  4. }
  5. ksort($galeria);
  6. foreach ($galeria as $key => $val) {
  7. echo '<p class="thumbnail">'
  8. .'<a href="'.$val.'" rel="lightbox['.$_GET['view'].']">'
  9. .'<img src="'.$key.'" alt="">'
  10. .'</a></p>';
  11. }


a i ten $_GET[] az się prosi o js injection
djmentos
ten $_GET[] jest odfiltrowywany troszkę wyżej winksmiley.jpg

dzięki wielkie za pomoc.
Kshyhoo
To użyj przefiltrowaną zmienną a nie goły get smile.gif
djmentos
Nie, nie, nie filtruje, tylko odfiltrowuje, a to różnica.

Odfiltrowuje, w sensie, że przekierowuje na stronę z info o błędzie, jeśli dana galeria nie istnieje. A trudno, żeby znaleźć galerię z wszczepionym w nazwę JS, więc bez obaw mogę używać czystą zmienną.
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.