Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][MySQL][PHP] Użycie LIGHTBOXU, galeria oparta o baze danych MYSQL
Forum PHP.pl > Forum > Przedszkole
anka_skakanka
Chciałabym uzyć lightboxu do wyswietlania zdjęć z bazy.. podczas uploadu zdjec tworzone sa miniatury z rozszerzeniem tb_... przeczytałam sporo, jednka nie umiem tego zaimplementować w kodzie... pomijając te znaczniki co się wrzuca do head.. zostaje problem z tym a href

  1. // lista miniatur
  2.  
  3. else if( $cid && empty( $pid ) )
  4. {
  5. $number_of_thumbs_in_row = 2;
  6.  
  7. $result = mysql_query( "SELECT idgaleria,opis_zdjecia,nazwa_zdjecia FROM galeria WHERE idkategorie_uslug='".addslashes($cid)."'" );
  8. $nr = mysql_num_rows( $result );
  9.  
  10. if( empty( $nr ) )
  11. {
  12. $result_final = "\t<tr><td>Brak zdjęć w tej kategorii</td></tr>\n
  13. \t<a href='index.php?id=galeria'> Powrót do wyboru kategorii. </a>\n";
  14. }
  15. else
  16. {
  17. echo "<tr><td><a href='index.php?id=galeria'>Ponowny wybór kategorii zdjęć</a> &gt</td></tr>";
  18. while( $row = mysql_fetch_array( $result ) )
  19. {
  20.  
  21. $result_array[] = "<a href='index.php?id=galeria&cid=$cid&pid=".$row[0]." rel='lightbox[roadtrip]'>
  22. <img src='".$katalog_zdjec."/tb_".$row[2]."' border='0' alt='".$row[1]."' /></a>";
  23.  
  24. }
  25. mysql_free_result( $result );
  26.  
  27. $result_final = "<tr>\n";
  28.  
  29. foreach($result_array as $thumbnail_link)
  30. {
  31. if($licznik == $number_of_thumbs_in_row)
  32. {
  33. $licznik = 1;
  34. $result_final .= "\n</tr>\n<tr>\n";
  35. }
  36. else
  37. $licznik++;
  38.  
  39. $result_final .= "\t<td>".$thumbnail_link."</td>\n";
  40. }
  41.  
  42. if($licznik)
  43. {
  44. if($number_of_photos_in_row-$licznik)
  45. $result_final .= "\t<td colspan='".($number_of_photos_in_row-$licznik)."'>&nbsp;</td>\n";
  46.  
  47. $result_final .= "</tr>";
  48. }
  49. }
  50. }
  51. // zdjęcie w pelnym wymiarze
  52. else if( $pid )
  53. {
  54. $result = mysql_query( "SELECT opis_zdjecia,nazwa_zdjecia FROM galeria WHERE idgaleria='".addslashes($pid)."'" );
  55. list($opis_zdjecia, $nazwa_zdjecia) = mysql_fetch_array( $result );
  56. $nr = mysql_num_rows( $result );
  57. mysql_free_result( $result );
  58.  
  59. if( empty( $nr ) )
  60. {
  61. $result_final = "\t<tr><td>Brak zdjęć. </td></tr>\n";
  62. }
  63. else
  64. {
  65. $result = mysql_query( "SELECT nazwa_kategorii FROM kategorie_uslug WHERE
  66. idkategorie_uslug='".addslashes($cid)."'" );
  67. list($nazwa_kategorii) = mysql_fetch_array( $result );
  68. mysql_free_result( $result );
  69.  
  70. $result_final .= "<tr>\n\t<td>
  71. <a href='index.php?id=galeria'>Kategorie </a> &gt;
  72. <a href='index.php?id=galeria&cid=$cid'>$category_name</a></td>\n</tr>\n";
  73.  
  74. $result_final .= "<tr>\n\t<td align='center'>
  75. <br />
  76. <img src='".$katalog_zdjec."/".$nazwa_zdjecia."' border='0' alt='".$opis_zdjecia."' />
  77. <br />
  78. $opis_zdjecia
  79. </td>
  80. </tr>";
mortus
Nie wiemy dokładnie na czym polega problem. Proponuję jednak sprawdzić (wpisując w 26 linijce poniższy kod) co znajduje się w zmiennej $result_array.
  1. echo '<pre>'; print_r($result_array); echo '</pre>';
Na pierwszy rzut oka wygląda na to, że brakuje jednego pojedynczego apostrofu zamykającego atrybut href (przed atrybutem rel).
anka_skakanka
Cytat(mortus @ 2.03.2011, 08:48:31 ) *
Nie wiemy dokładnie na czym polega problem. Proponuję jednak sprawdzić (...)

znajduje się to
  1. Array ( [0] => )

Problem polega na tym, że wyswietla mi się blok miniatur, jak kliknę w miniaturę to otwiera mi się w tym samym oknie :
"kategorie> wybrana kategoria <br> zdjecie....."
jednakże nawet jak dodam do tego nawigację następny, poprzedni -> nie będzie się jakoś ładnie prezentować
dlatego chciałam aby po wyświetleniu miniatur, kliknięcie w jedną z nich otwierało je w lightboxie... w tych miejscach gdzie ja dodawalam to wyskakiwkalo mi to okienko, ale trwał tylko loading, bez ostatecznego efektu
z góry dziękuję za pomoc smile.gif
mortus
Czyli wygląda na to, że lightbox nie może odnaleźć pliku z obrazkiem. Przyjrzałaś się apostrofom, jak pisałem? Spróbuj podejrzeć źródło strony i zobacz, jak tam wyglądają odnośniki (te z rel='lightbox[roadtrip]'), a wszystko powinno być jasne. Co do sprawdzenia zawartości tablicy $result_array to chyba w złym miejscu je umieściłaś, albo mało precyzyjnie się wyraziłem. Chodziło mi o umieszczenie odpowiedniego kodu w 26 linijce, ale tego listingu, który przedstawiłaś. Wnioskuje stąd, że Ci się miniatury wyświetlają, a nie powinny, jeżeli $result_array jest pusta.
anka_skakanka
Cytat(mortus @ 2.03.2011, 15:10:56 ) *
Czyli wygląda na to, że lightbox nie może odnaleźć pliku z obrazkiem. Przyjrzałaś się apostrofom, jak pisałem? (...)


linijke wstawiłam w dobre miejsce, dałam fragment kodu to wiadome że ja pracuje na całości...
więc tak przyjrzałam się cytatowi... jak wywale te rel to działa mi tak jak wcześniej, czyli wyświtla miniaturę, klikam w nią i wtedy otwiera mi się w tym samym oknie duże zdjęcie... a mysql_free_result odpowiada za zwolnienie pamięci przecież

/index.php?id=galeria&cid=2&pid=2 link gdy duże zdjęcie
/index.php?id=galeria&cid=1 link dla strony z miniaturami
// cid= to jest kategoria zdjec ( w danej kategorii mam x zdjec )
strona nie wrzucona na serwer wiec nie dam linku :/... może wrzucic plik z galeria.php i baze.sql ? i wtedy będzie wiadomo o co dokładniej chodzi
mortus
Jeśli usuniesz rel='lightbox[roadtrip]' to wszystko działa jak powinno, bo po naciśnięciu miniaturki wykonywany jest kod z następnego bloku elseif. Chodzi mi o to, że masz w kodzie:
  1. $result_array[] = "<a href='index.php?id=galeria&cid=$cid&pid=".$row[0]." rel='lightbox[roadtrip]'><img src='".$katalog_zdjec."/tb_".$row[2]."' border='0' alt='".$row[1]."' /></a>";
a powinno być:
  1. $result_array[] = "<a href='index.php?id=galeria&cid=$cid&pid=".$row[0]."' rel='lightbox[roadtrip]'><img src='".$katalog_zdjec."/tb_".$row[2]."' border='0' alt='".$row[1]."' /></a>";
Dlatego mówiłem o sprawdzeniu źródła strony i przyjrzeniu się odnośnikom do odpowiednich zdjęć.
anka_skakanka
Cytat(mortus @ 2.03.2011, 16:40:47 ) *
(..) ]Dlatego mówiłem o sprawdzeniu źródła strony i przyjrzeniu się odnośnikom do odpowiednich zdjęć.

no wiem co jest wykonywane jak wywale te "rel":)... natomiast w ten sposób miałam tą linię jak doklądałam kod z lightboxa, tylko za dużo razy po kolejnych zmianach cofnęłam i dlatego znacznik znikł, niestety po dodaniu tego znacznika " ' " dalej tak samo działa, czyli otwiera się zacienione na około jasne okienko z tym loadingiem ... moze trzeba dodatkowo zagnieżdzić zapytanie żeby pobierało duży obrazek ?.. już tyle kombinacji róznych probowałam że się sama gubię wkońcu która kopia kopii kopiowana jets ta najlepiej działającą :/... chyba że może jest jakieś rozwiązanie inne godne polecenia, co będzie łatwiejsze w implementacji smile.gif

ale przeciez jak już klikam w miniaturkę zdjęcia to mi się wszystko zacienia ale adres pozostaje ten co był przy wyborze kategorii czyli
  1. <a href="http://localhost/galeria/index.php?id=galeria&cid=2" target="_blank">http://localhost/galeria/index.php?id=galeria&cid=2</a>

to z pid mi sie pojawia jak wykonuje się to po else czyli bez uzycia rel
mortus
A zatem chodzi o to, że odnośnik musi wskazywać bezpośrednio na obrazek, jak poniżej:
  1. $result_array[] = "<a href='".$katalog_zdjec."/".$row[2]."' rel='lightbox[roadtrip]'><img src='".$katalog_zdjec."/tb_".$row[2]."' border='0' alt='".$row[1]."' /></a>";
Wtedy cały kolejny blok elseif (ten z $pid) jest zbędny.
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.