Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Odczytanie zdjęć z kilku katalogów
Forum PHP.pl > Forum > Przedszkole
Ravik
Witam,

Mam pewien problem (nie mogę nic wymyśleć). Jak odczytać pliki .jpg z kilku katalogów. Chodzi mi o coś takiego:

Mam katalog "zdjęcia" a w nim są umieszczone kategorie zdjęć np. "zdjęcia_wakacje" a w katalogu "zdjęcia_wakacje" znajdują się jeszcze dwa foldery o nazwie "male" i "duze".

Chodzi mi o to żeby na stronie wyświetlić wszystkie zdjęcia ze wszystkich podkatalogów w których znajdują się foldery "małe" i po kliknięciu w miniaturkę otwierało się duże zdjęcie (taka sama nazwa w folderze duże).

Proszę o podsunięcie jakiegoś pomysłu.

Czytałem o DirectoryIterator, zapoznałem się też z RecursiveIterator, ale nie mam pojęcia jak to poprawnie zastosować. Za skrypt jestem gotów zapłacić.

Pozdrawiam,
Ravik
korro
  1. <?php
  2. function rglob($pattern='*', $flags = 0, $path='')
  3. {
  4.    $paths=glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT);
  5.    $files=glob($path.$pattern, $flags);
  6.    foreach ($paths as $path) { $files=array_merge($files,rglob($pattern, $flags, $path)); }
  7.    return $files;
  8. }
  9.  
  10. foreach(rglob("*.*",0,"zdjecia") as $file) {
  11.    if (strpos($file, "male")) {
  12.        $file_male = str_replace('', '/', $file);
  13.        $file_duze = str_replace('male','duze', $file_male);
  14.        echo '<a href="'.$file_duze.'"><img src="'.$file_male.'"/></a>;
  15.  
  16.    }
  17. }
  18. ?>


Trochę zmieniłem, żeby było klarowniejsze.
Ravik
Hmm, co jest nie tak ?

W 14 linijcie wyświetla mi ją na zielono tak jakby $file_duze nie było zmienną...

A literówki żadnej nie ma...

Mógłbyś mi jeszcze z tym pomóc ?

Będę bardzo wdzięczny.

Pozdrawiam,
Ravik
korro
Witam.
W 13 linijce zamiast jednego \ daj dwa.
Kolorowanie składni forum nie dało rady.
Ravik
Ok dziękuję Ci bardzo smile.gif Jedna malutka literówka w 14 linijce była też.

A jak można zrobić żeby dzieliło te miniaturki na strony też ? Po 8 na każdą stronę, wiem że trzeba wykorzystać ceil, ale gdzie to wstawić questionmark.gif
Ravik
No dobra, szukalem na googlach o tym, ale gdzie mam wstawic ceil questionmark.gif Przed $files_male ?

Zrobiłem coś takiego, ale w ogóle nic nie wyświetla..

  1. <?php
  2.  
  3. function rglob($pattern='*', $flags = 0, $path='')
  4. {
  5.   $paths=glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT);
  6.   $files=glob($path.$pattern, $flags);
  7.   foreach ($paths as $path) { $files=array_merge($files,rglob($pattern, $flags, $path)); }
  8.   return $files;
  9. }
  10.  
  11. foreach(rglob("*.*",0,"slub") as $file) {
  12.   if (strpos($file, "male")) {
  13.       $file_male = str_replace('', '/', $file);
  14.       $file_duze = str_replace('male','duze', $file_male);
  15.      
  16.       $ilosc = count($files_male);
  17.       for($i = 0; $i < $ilosc; ++$i) {
  18.        $iloscNaStronie = 8; //ilosc elementow na jednej stronie
  19.        $iloscStron = ceil($ilosc/$iloscNaStronie);
  20.              
  21.               echo '<a href="'.$file_duze.'"><img src="'.$file_male.'" border="0" /></a>;
  22.        }
  23.  
  24.  
  25.      
  26. }
  27.  
  28. }
  29.  
  30. ?>
korro
Heh, http://pl.php.net/ceil zaokrągla liczby, w tym przypadku nie przyda się do niczego.
Musisz wprowadzić zmienną GET i doklejać ją do linków do kolejnych podstron.
Trzeba przerobić pętlę foreach na for.
For jako parametr powinna dostać zmienną z GET, żeby wiedzieć od którego obrazka ma zacząć wyświetlać.
Ravik
Zrobiłem coś takiego, co prawda wyświetla u dołu linki do stron, ale nadal wyświetla wszystkie miniaturki na stronie, (zamiast 8) co trzeba zmienić ?
  1. <?php
  2. function rglob($pattern='*', $flags = 0, $path='')
  3. {
  4.   $paths=glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT);
  5.   $files=glob($path.$pattern, $flags);
  6.   foreach ($paths as $path) { $files=array_merge($files,rglob($pattern, $flags, $path)); }
  7.   return $files;
  8. }
  9.  
  10. foreach(rglob("*.*",0,"slub") as $file) {
  11.   if (strpos($file, "male")) {
  12.       $file_male = str_replace('', '/', $file);
  13.       $file_duze = str_replace('male','duze', $file_male);
  14.       echo '<a href="'.$file_duze.'"><img src="'.$file_male.'"/></a>';
  15.      
  16.   }
  17. }
  18.  
  19. $ilosc = 439;
  20. for($i = 0; $i < $ilosc; ++$i) {
  21. $iloscNaStronie = 8; //ilosc elementow na jednej stronie
  22. $iloscStron = ceil($ilosc/$iloscNaStronie); } //maksymalna ilosc stron
  23.  
  24. if($_GET['strona'] && $_GET['strona'] > 0 && $_GET['strona'] <= $iloscStron) $strona = $_GET['strona']-1;
  25. else $strona = 0;
  26.  
  27. $start = $strona * $iloscNaStronie;
  28. if($start >= $ilosc) $start = 0; $stop = $start + $iloscNaStronie; if($stop >= $ilosc) $stop = $ilosc;
  29.  
  30. echo '<div>';
  31. if ($strona > 0) { echo '<a href="index.php?strona='.($iloscStron - $iloscStron+1).'">[<<]</a>'; } //do przodu
  32. if ($strona > 0) { echo '<a href="index.php?strona='.($strona).'">[<]</a>'; } //wstecz o jedna strone
  33.  
  34. for($i = 1; $i <= $iloscStron; ++$i) {
  35. echo '<a href="index.php?strona='.$i.'" >['.$i.']</a>'; //drukowanie linkow do stron
  36. }
  37.  
  38. if ($strona < $iloscStron-1) { echo '<a href="index.php?strona='.($strona+2).'">[>]</a>'; } //dalej o jedna strone
  39. if ($strona < $iloscStron-1) { echo '<a href="index.php?strona='.($iloscStron).'">[>>]</a>'; } //do konca
  40.  
  41. echo '<dl>';
  42. for ($i = $start; $i < $stop; ++$i) {
  43. echo '
  44. <dd><a href="'.$file_duze[$i].'"><img src="'.$file_male[$i].'" alt="" /></a></dd>'; } //wyswietlenie
  45. echo '</dl>;
  46.  
  47. ?>
korro
Przyjacielu, nie zrobię tego za Ciebie.
Poczytaj podstawy PHP.
Ravik
Ale ja nie chcę żebyś to robił za mnie smile.gif Napisałem coś takiego i nie wiem gdzie robię błąd. Bardzo mi już pomogłeś za co bardzo dziękuję. Nie chcę już gotowego kodu, tylko nie mam pojęcia w czym robię błąd ;/

Edit:

Zrobiłem coś takiego, tyle że nie wyświetla mi miniaturek i miniaturki nie poprawnie odwołują się do zdjęcia. Pomoże mi ktoś z tym ?

  1. <?php
  2.  
  3. $opis = file('opisy.txt'); // plik z opisami
  4.  
  5. function rglob($pattern='*', $flags = 0, $path='')
  6. {
  7.   $paths=glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT);
  8.   $files=glob($path.$pattern, $flags);
  9.   foreach ($paths as $path) { $files=array_merge($files,rglob($pattern, $flags, $path)); }
  10.   return $files;
  11. }
  12.  
  13. foreach(rglob("*.*",0,"slub") as $file) {
  14.   if (strpos($file, "male")) {
  15.       $male = str_replace('', '/', $file);
  16.       $duze = str_replace('male','duze', $male);
  17.      }
  18. }
  19.  
  20. $ilosc = 439; //ilosc elementow w tablicy (miniaturek)
  21.  
  22. for($i = 0; $i < $ilosc; $i++) {
  23. $iloscNaStronie = 8; //ilosc elementow na jednej stronie
  24. $iloscStron = ceil($ilosc/$iloscNaStronie); } //maksymalna ilosc stron
  25.  
  26. if($_GET['strona'] && $_GET['strona'] > 0 && $_GET['strona'] <= $iloscStron) $strona = $_GET['strona']-1;
  27. else $strona = 0;
  28.  
  29. $start = $strona * $iloscNaStronie;
  30. if($start >= $ilosc) $start = 0; $stop = $start + $iloscNaStronie; if($stop >= $ilosc) $stop = $ilosc;
  31.  
  32. echo '<div>';
  33. if ($strona > 0) { echo '<a href="index.php?strona='.($iloscStron - $iloscStron+1).'">[<<]</a>'; } //do przodu
  34. if ($strona > 0) { echo '<a href="index.php?strona='.($strona).'">[<]</a>'; } //wstecz o jedna strone
  35.  
  36. for($i = 1; $i <= $iloscStron; ++$i) {
  37. echo '<a href="index.php?strona='.$i.'" >['.$i.']</a>'; //drukowanie linkow do stron
  38. }
  39.  
  40.  
  41. if ($strona < $iloscStron-1) { echo '<a href="index.php?strona='.($strona+2).'">[>]</a>'; } //dalej o jedna strone
  42. if ($strona < $iloscStron-1) { echo '<a href="index.php?strona='.($iloscStron).'">[>>]</a>'; } //do konca
  43.  
  44. echo '<html><head><style type="text/css">
  45. * { margin: 0; padding: 0; }
  46. body { margin: 20px auto; background: gold; width: 700px; text-align: center; }
  47. a { color: brown; margin: 0 5px; }
  48. dl { float: left; width: 100%; padding: 5px; margin-top: 5px; border: 1px solid #000000; }
  49. dd { width: 175px; float: left; }
  50. dd p { background: sandybrown; margin: 5px; line-height: 20px; }
  51. dd img { border: 0; width: 102px; height: 153px; border: 1px solid #000000; padding: 5px; }
  52. #stopka { float: left; background: sandybrown; width: 710px; margin-top: 5px; height: 25px; text-align: left; }
  53. #stopka p { margin-left: 20px; }
  54. </style></head>
  55. <body>';
  56.  
  57. echo '<dl>';
  58. for ($i = $start; $i < $stop; $i++) {
  59. echo '
  60. <dd><p>'.$opis[$i].'</p><a href="'.$duze.'"><img src="'.$miniaturki.'" alt="" /></a></dd>'; } //drukowanie elementów tablic
  61. echo '</dl>;
  62.  
  63.  
  64.  
  65. ?>


Mógłby ktoś obejrzeć ten mój kod ? I powiedzieć mniej więcej co muszę naprawić ?

// Jestem gotów zapłacić
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.