Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: źle działający skrypt wyświetlający zdjęcia
Forum PHP.pl > Forum > Przedszkole
maxer
Witam, zrobiłem na swojej stronie mini galerię. Po lewej stronie wyświetlają się miniaturki, a po prawej duże zdjęcie. Chciałbym aby duze zdjecie ktore jest aktualnie wyswietlane zmienialo obrazek miniaturki (np. na czerwony kwadrat).

napisalem taki kod, ale on nie dziala jak nalezy, znaczy sie miniaturka aktualnie wyswietlana nie zmienia swoich "barw":
  1. <td valign="top"><div style="margin-top: 90px;">
  2.  <p style="text-align: center">
  3.  <?
  4.  $dir = opendir("gfx/kolekcja/czarne");
  5. if($dir) {
  6. while($img = readdir($dir)) {
  7.  
  8. @list($width, $height, $type, $attr) = getimagesize("gfx/kolekcja/czarne/$img");
  9.  
  10. if($img=='' or $img=='.' or $img=='..')
  11. {
  12. }
  13. else if($img=='$fotka')
  14. {
  15. print"<a href=\"kolekcja.php?fotka=$img\"><img style=\"margin-top: 3px; margin-left: 2px; border-color: White;\" border=\"1\" src=\"gfx/kolekcja/kolorowe/$img\" width=\"26\" height=\"40\"></a>";
  16. }
  17. else
  18. {
  19. print"<a href=\"kolekcja.php?fotka=$img\"><img style=\"margin-top: 3px; margin-left: 2px; border-color: White;\" border=\"1\" src=\"gfx/kolekcja/czarne/$img\" width=\"26\" height=\"40\"></a>";
  20.  
  21. }
  22. }
  23. closedir($dir);
  24. }
  25.  ?>
  26.  </p>
  27.  
  28. </div></td>
  29. <td valign="top">
  30. <p style="text-align: right">
  31. <?
  32. print"<img border='0' src='gfx/kolekcja/duze/$fotka'>";
  33. ?></p></td>

Pozdrawiam

edit: wywaliłem problem ;-)
Jojo
Rozumiem że w zmiennej $fotka masz aktualnie wyświetlane zdjęcie. Jeśli tak to błąd masz prawdopodobnie w linii 13 powinno być:
  1. <?php
  2.  
  3. else if($img==$fotka)
  4.  
  5. ?>
maxer
Niestety wywala błąd :/
Cytat
Parse error: parse error, unexpected T_ELSE in /home/espee/ftp/od_maxa/kolekcja.php
w lini w której zrobiłem
  1. <?php
  2. else if($img==$fotka)
  3. ?>

:/
Jojo
A pewien jesteś że dobrze to wkleiłeś? Bez znaczników <?php i ?> i nie skasowałeś przy wklejaniu żadnej klamry? (spójrz linijkę wyżej czy wszystko się zgadza).
nospor
@jojo nie wprowadzaj ludzi w błąd. w instrukcji if..else moze byc tylko jeden else.
tak wiec kod:
  1. <?php
  2.  
  3. if ...
  4. else if...
  5. else ...
  6.  
  7. ?>
jest bledny.
Poprawny to:
  1. <?php
  2.  
  3. if ...
  4. elseif...
  5. else ...
  6.  
  7. ?>


@maxer wywal ten problem z tytulu. tu kazdy ma problem
Jojo
nospor: mylisz się...
http://pl.php.net/manual/pl/control-structures.elseif.php
"else if" działa w php dokładnie tak samo jak w C. Czyli jak napiszesz:
  1. <?php
  2.  
  3. if( warunek )
  4. {
  5. //kod
  6. }
  7. else if( warunek )
  8. {
  9. //kod
  10. }
  11. else
  12. {
  13. //kod
  14. }
  15.  
  16. ?>

jest równoważne z tym jakbyś napisał:
  1. <?php
  2.  
  3. if( warunek )
  4. {
  5. //kod
  6. }
  7. else
  8. {
  9. if( warunek )
  10. {
  11. //kod
  12. }
  13. else
  14. {
  15. //kod
  16. }
  17. }
  18.  
  19. ?>
nospor
@Jojo najmocniej Cię przepraszam. Zmylil mnie ten komunikat błędu, coś mi się jeszcze ubzduralo i tak mi się napisalo. A do linku co podales to ja wcześniej i tak zaglądalem smile.gif
Co nie zmienia faktu że lepiej jest pisać elseif niz else if (a przynajmniej tak mi kiedys wpojona na torturach i teraz się tego trzymam). Nawet w linku co podales masz elseif winksmiley.jpg

edit: "Moderator nie popelnia błędów - on sprawdza czujność użytkowników"
maxer
Taki kod mam teraz:
  1. <?
  2. $dir = opendir("gfx/kolekcja/czarne");
  3. if($dir) {
  4. while($img = readdir($dir)) {
  5.  
  6. @list($width, $height, $type, $attr) = getimagesize("gfx/kolekcja/czarne/$img");
  7.  
  8. if($img=='' or $img=='.' or $img=='..')
  9. {
  10. }
  11. else
  12. {
  13. print"<a href=\"kolekcja.php?fotka=$img\"><img style=\"margin-top: 3px; margin-left: 2px; border-color: White;\" border=\"1\" src=\"gfx/kolekcja/czarne/$img\" width=\"26\" height=\"40\"></a>";
  14. }
  15. else if($img==$fotka)
  16. {
  17. print"<a href=\"kolekcja.php?fotka=$img\"><img style=\"margin-top: 3px; margin-left: 2px; border-color: White;\" border=\"1\" src=\"gfx/kolekcja/kolorowe/$img\" width=\"26\" height=\"40\"></a>";
  18. }
  19.  
  20. }
  21.  
  22. closedir($dir);
  23. }
  24.  ?>


i to wywala ten błąd :/
kszychu
linie 9 i 10: co to ma być?
Jojo
nospor: Ja też piszę "łącznie" ale ten fragment kodu był po prostu skopiowany z listingu nad moim postem.

kszychu: Sądzę że to jest if w którym nic się nie wykonuje winksmiley.jpg

maxer: Masz teraz złą kolejność najpierw powinien być if potem elseif a na koniec dopiero else.
kszychu
@Jojo, w takim razie wytłumacz mi, do którego ifa odnosi się linia 15.
maxer
@Jojo serdecznie dziękuję smile.gif Działa jak należy smile.gif
@kszychu linie 9 i 10 są po to aby skrypt nie wyświetlał katalogu jako zdjęcia ;-)

Pozdrawiam
kszychu
@maxer, w tym celu, przed while daj sobie:
  1. <?php
  2. readdir($dir);
  3. readdir($dir);
  4.  
  5. ?>


oszczędzi Ci to sprawdzania za każdym przebiegiem warunku, który występuje tylko dwa razy na początku.
Kuziu
To zamiast linii 9 i 10 możesz napsiać tak

  1. <?php
  2. if($img!='' && $img!='.' && $img!='..')
  3. ?>


I nie bedziesz miał takich dziwactw w kodzie choć owczywiście Twój kod zadziała tak samo.
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.