Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z wyświetleniem zdjęć
Forum PHP.pl > Forum > Przedszkole
Ravik
Witam,

Mam taki kod. Wszystko działa ok do momentu w którym przychodzi do wyświetlenia zdjęcia (odczytuje z katalogu ilość zdjęć i tworzy kod <a href=""> ale w pomiędzy apostrofami nie ma nic), oraz nie wyświetla tytułu zdjęcia. Będę wdzięczny za pomoc.

  1. <?php
  2. //Konfiguracja
  3. $photos_on_page = 2; //ile w sumie ma byc minatur na stronie
  4. $line_break = 6; //ile ma byc w jednej lini
  5. $folder = "./zdjecia/";
  6.  
  7. //Logika
  8.  
  9. function removeExtension($strName) {
  10. $ext = strrchr($strName, '.');
  11. if($ext !== false) {
  12. $strName = substr($strName, 0, -strlen($ext));
  13. }
  14. return $strName;
  15. }
  16.  
  17.  
  18. $album = array();
  19. $i = 0;
  20. foreach (glob($folder."*") as $fotki) {
  21. $album[$i++]=$fotki;
  22. }
  23.  
  24. $photos_count = sizeof($album);
  25.  
  26. $offset = 0;
  27.  
  28.  
  29. if (isset($_GET['offset'])) $offset = $_GET['offset']-1;
  30. $cycles = ($photos_count-($offset*$photos_on_page) >= $photos_on_page) ? $photos_on_page+($offset*$photos_on_page) : $photos_count;
  31. $breaker = 0;
  32. echo '<table border=1>';
  33. echo '<tr>';
  34. for ($l = ($offset*$photos_on_page); $l < $cycles; $l++) {
  35. echo '<td align=center>';
  36. echo "<a href='".$album[$i]."'><img border=0 src='".$album[$i]."'></a><br>";
  37. $title = explode("/",$album[$i][1]);
  38. echo removeExtension($title[3]);
  39. echo '</td>';
  40. $breaker++;
  41. if ($breaker == $line_break) {
  42. echo "</tr><tr>";
  43. $breaker = -1;
  44. }
  45. }
  46. echo '</tr>';
  47. echo '</table>';
CuteOne
Powiedz mi jedno dlaczego raz używasz $album[$i] a innym razem $album[$i][1]?

Chcesz wiedzieć co znajduje się w $album zaraz po pętli foreach(glob($folder."*") as $fotki) { } wstaw to:

  1. // dzięki temu wyświetlisz zawartośc tablicy $albumy
  2. echo '<pre>';
  3. print_r($album);
  4. echo '</pre>';



Druga sprawa dlaczego <a> i <img> mają takie same ścieżki?? I ostatnia rzecz dlaczego nie podajesz nazwy folderu, w którym te zdjęcia się znajdują?
lobopol
Taka prośba ode mnie, prze tą pętlą wyświetl for
  1. ($l = ($offset*$photos_on_page); $l < $cycles; $l++)
$i i zastanów się nad tą pętlą a i puść print_r($album) i napisz nam zawartość
Ravik
Myślałem że sobie poradziłem a jednak nie. Skrypt poprawnie wyświetla zdjęcia, ale nie wyświetla ich nazwy na podstawie tytułu, teraz mam taki kod:

  1. <?php
  2. //Konfiguracja
  3. $photos_on_page = 2; //ile w sumie ma byc minatur na stronie
  4. $line_break = 6; //ile ma byc w jednej lini
  5. $folder = "./zdjecia/";
  6.  
  7. //Logika
  8.  
  9. function removeExtension($strName) {
  10. $ext = strrchr($strName, '.');
  11. if($ext !== false) {
  12. $strName = substr($strName, 0, -strlen($ext));
  13. }
  14. return $strName;
  15. }
  16.  
  17.  
  18. $album = array();
  19. $i = 0;
  20. foreach (glob($folder."*") as $fotki) {
  21. $album[$i++]=$fotki;
  22. }
  23.  
  24. $photos_count = sizeof($album);
  25.  
  26. $offset = 0;
  27.  
  28.  
  29. if (isset($_GET['offset'])) $offset = $_GET['offset']-1;
  30. $cycles = ($photos_count-($offset*$photos_on_page) >= $photos_on_page) ? $photos_on_page+($offset*$photos_on_page) : $photos_count;
  31. $breaker = 0;
  32. echo '<table border=1>';
  33. echo '<tr>';
  34. for ($i = ($offset*$photos_on_page); $i < $cycles; $i++) {
  35. echo '<td align=center>';
  36. echo "<a href='".$album[$i]."'><img border=0 src='".$album[$i]."'></a><br>";
  37. $title = explode("/",$album[$i]);
  38. echo removeExtension($title[3]);
  39. echo '</td>';
  40. $breaker++;
  41. if ($breaker == $line_break) {
  42. echo "</tr><tr>";
  43. $breaker = -1;
  44. }
  45. }
  46. echo '</tr>';
  47. echo '</table>';


Będzie ktoś w stanie podpowiedzieć? smile.gif

Pod zdjęciem nie otrzymuję nazwy pliku, tylko napis "Array", jak rozbić tą tablicę?
lobopol
a puść var_dump na tej zmiennej
Ravik
var_dump($album)

  1. array(4) { [0]=> string(40) "./zdjecia/1cbac288d0005ffe54d1de851.jpeg" [1]=> string(39) "./zdjecia/1cbc288d0005ffe54d1de851.jpeg" [2]=> string(39) "./zdjecia/7e32e96700235fb34d1de844.jpeg" [3]=> string(21) "./zdjecia/zdjecie.jpg" }


var_dump($title)

  1. array(3) { [0]=> string(1) "." [1]=> string(7) "zdjecia" [2]=> string(30) "1cbac288d0005ffe54d1de851.jpeg" }


var_dump($title[3])

Daje null, wiem że ta tablica [3] nic mi nie wyświetla, więc jak mam kombinować?

Ok poradziłem już sobie, dziękuję za odpowiedzi. Temat do zamknięcia.
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.