Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Losowe zdjęcie
Forum PHP.pl > Forum > Przedszkole
febien
Witam

Przeszukałem juz chyba całe google - ale i tak nie mogę rozwiązac nastepującego problemu - chce zamieścic skrypt wyświetlający na mojej stronie losowe zdjęcie - lecz żaden do końca mnie nie satysfakcjonuje ( posiadam CMS'a jPORTAL 2 wszystkie zdjęcia są w folderze /uploads/galery/ - miniaturki poprzedzone są literą m - natomiast oryginalne zdjecia są numerowane od 1 do 430 )

Oto moim zdaniem dwa najprzydatniejsze :

  1. <?php
  2. $images = 430;
  3. $path = "uploads/galery/m";
  4. $random = rand(1,$images);
  5. echo "<img src=$path"."$random".".jpg".">"
  6. ?>


Ad1 Wszystko mi w nim pasuje - tylko co jeszcze dopisać by oprócz jpg obsługiwał jeszcze inne formaty ( png gif JPG jpeg ) questionmark.gif
Ad2 - Czy da się zrobić by po kliknieciu w miniaturke ( np .../galery/m100 - wyświetlało jej duży odpowiednik questionmark.gif ( 100.jpg )


Drugi skrypt -
  1. <?php
  2.  
  3.  
  4. /*
  5. Jezeli chcesz wykorzystać skypt zachowaj ten komentarz
  6. autor skryptu - Pawel Bryndza;
  7. kontakt- pawel1-81@o2.pl
  8. */
  9.  
  10.  
  11.  /* katalogiem domyślnym jest "galeria" */
  12. $sciezka_do_katalogu = 'uploads/galery/';
  13.  
  14. $n=0;
  15. if(@$d = opendir($sciezka_do_katalogu)){
  16.  
  17. while (!(($plik = readdir($d)) === false)) {
  18. if(stristr($plik, '.jpg') or stristr($plik, '.jpeg') or stristr($plik, '.gif')){
  19. $n++;
  20. $losowe_zdjecie[$n] = "$plik";
  21. }
  22.  }
  23.  
  24. if(!empty($losowe_zdjecie)) {
  25.  $losowa_pozycja = array_rand($losowe_zdjecie);  
  26.  
  27.  echo "<img src=\"$sciezka_do_katalogu/$losowe_zdjecie[$losowa_pozycja]\">";
  28.  
  29.  
  30. }
  31. else echo 'Brak zdjęć';  
  32. }
  33. else echo 'Błędna ścieżka do katalogu lub katalog nie istnieje.';
  34. ?>


Ad 1 - Co dopisac by nie wyswietlało mi wszystkie fotki - lecz wyłacznie te z przedrostkiem " m " questionmark.gif
Ad 2 - I czy tak samo jak w tamtym przypadku dałoby się zrobić link od razu do dużej wersji tego zdjęcia questionmark.gif

Zalezy mi tylko na tym aby jeden z tych skryptów działał wg mojej charakterystyki , obojętnie który z nich. Jak widać jestem zielony w sprawach związanych z php - z góry dziekuje jesli ktos by mi pomógł...

Pozdrawiam
skowron-line
Cytat
Ad 1 - Co dopisac by nie wyswietlało mi wszystkie fotki - lecz wyłacznie te z przedrostkiem " m " questionmark.gif

  1. <?php
  2. if(substr($plik,1,1) == "m")
  3. return true;
  4. ?>
nitek
Cytat(febien @ 29.02.2008, 12:40:20 ) *
Ad2 - Czy da się zrobić by po kliknieciu w miniaturke ( np .../galery/m100 - wyświetlało jej duży odpowiednik questionmark.gif ( 100.jpg )


Jeśli oprzesz się na drugim skrypcie, zastosujesz, to co napisał skowron-line, masz zachowaną zasadę nazywania zdjęć jak opisałeś, to możesz zrobić to w ten sposób:

  1. <?php
  2. //zakladam, że przykładowe zdjęcie nazywa się m100.jpg
  3. $duze_zdjecie=substr("m", "", $losowe_zdjecie[$losowa_pozycja])
  4. //wartosc zmiennej $duze_zdjecie, to będzie teraz 100.jpg
  5. ?>


mając taką zmienną, możesz bez problemu wygenerować link do dużego zdjęcia...
febien
Cytat(skowron-line @ 29.02.2008, 14:32:44 ) *
  1. <?php
  2. if(substr($plik,1,1) == "m")
  3. return true;
  4. ?>


O ile co do drugiego posta już sam sobie znalazłem sposób w jaki zrobić link do zdjęcia z tamtą zmienną ... o tyle nie wiem w którym miejscu wkleić / zastapić ten kod żeby to chodziło tak jak było w zamierzeniu autora... wstydnis.gif ( by wyświetlało zdjęcia z przedrostkiem " m ")

Jeśli ktoś by mógł mi wskazać jak ten kod powinien wyglądac w całości z zastosowaniem tamtego warunku byłbym very wdzięczny ( Próbowałem już samemu co nieco "kombinować" lecz z mizernym skutkiem nadal mi się nie udawało sadsmiley02.gif
nitek
dopiero zauważyłem, że @skowron-line trochę wprowadził cię w błąd. mianowicie substr liczy się już od 0, a nie od 1...


możesz nawet przerobić tego if'a (ze skryptu nr 2):

  1. <?php
  2. if((stristr($plik, '.jpg') or stristr($plik, '.jpeg') or stristr($plik, '.gif')) && substr($plik,0,1) == "m")
  3. {
  4. $n++;
  5. $losowe_zdjecie[$n] = "$plik";
  6. }
  7. ?>


wówczas tablica $losowe_zdjęcie będzie zawierać tylko nazwy tych plików, których nazwy zaczynają się od litery "m", a o to właśnie ci chodzi...
febien
  1. <?php
  2.  
  3.  
  4. /*
  5. Jezeli chcesz wykorzystać skypt zachowaj ten komentarz
  6. autor skryptu - Pawel Bryndza;
  7. kontakt- pawel1-81@o2.pl
  8. */
  9.  
  10.  
  11.  /* katalogiem domyślnym jest "galeria" */
  12. $sciezka_do_katalogu = 'uploads/galery/';
  13. $duze_zdjecie=substr("m", "", $losowe_zdjecie[$losowa_pozycja]);
  14. $n=0;
  15. if(@$d = opendir($sciezka_do_katalogu)){
  16.  
  17. while (!(($plik = readdir($d)) === false)) {
  18. if(substr($plik,1,1) == "m")
  19. return true;
  20. if((stristr($plik, '.jpg') or stristr($plik, '.jpeg') or stristr($plik, '.gif')) && substr($plik,0,1) == "m")
  21. {
  22. $n++;
  23. $losowe_zdjecie[$n] = "$plik";
  24. }
  25.  }
  26.  
  27. if(!empty($losowe_zdjecie)) {
  28.  $losowa_pozycja = array_rand($losowe_zdjecie);  
  29.  
  30.  echo "<img src=\"$sciezka_do_katalogu/$losowe_zdjecie[$losowa_pozycja]\">";
  31.  
  32. $path = 'http://www.1g-tzn.yoyo.pl/uploads/galery/';
  33.  
  34. echo " tutaj ma byc link <a href=$path"."$duze_zdjecie".".jpg".">Link</a><br>";
  35.  
  36.  
  37. }
  38. else echo 'Brak zdjęć';  
  39. }
  40. else echo 'Błędna ścieżka do katalogu lub katalog nie istnieje.';
  41. ?>


Tak więc zastosowałem się do uwag Nitka co do tej zmiennej i niestety ona nie działa :/ - w przypadku gdy podamy tej zmiennej stałą wartość link działa bez problemu - więc jakiś bład musi być prawdopodobnie w

  1. <?php
  2. //zakladam, że przykładowe zdjęcie nazywa się m100.jpg
  3. $duze_zdjecie=substr("m", "", $losowe_zdjecie[$losowa_pozycja])
  4. //wartosc zmiennej $duze_zdjecie, to będzie teraz 100.jpg
  5. ?>


Czy ktoś i tym razem "mnie uratuje " questionmark.gif sadsmiley02.gif
nitek
dałeś to w całkowicie złym miejscu...

kod:
  1. <?php
  2. $duze_zdjecie=substr("m", "", $losowe_zdjecie[$losowa_pozycja])
  3. ?>


daj w np. 34 linii kodu który wkleiłeś przed chwilą... wcześniej nie możesz tego robić, bo niby skąd miałbyś wcześniej zmienną $losowe_zdjecie ? blinksmiley.gif
febien
  1. <?php
  2. $duze_zdjecie =substr( $losowe_zdjecie[$losowa_pozycja] , 1);
  3. ?>


Rozwiązałem problem w ten sposób smile.gif - Dzięki wielkie za pomoc smile.gif Temat można już uznać za zakończony smile.gif
nitek
widzisz, jak to jest, jak się pisze neraz w pośpiechu.. miało być tak:

  1. <?php
  2. $duze_zdjecie=str_replace("m", "", $losowe_zdjecie[$losowa_pozycja])
  3. ?>


zamiast subsrt.. i też by zadziałało - sorry za pomyłkę worriedsmiley.gif
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.