Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Losowe zdjecie z folderu
Forum PHP.pl > Forum > PHP
wozniak
Witam jak zrobic zeby wyswietlało sie jedno losowe zdjecie z folderu?Tylko w tym folderze są rozne nazwy:( np. foto1,zdjecie202
Linandar
- otwierasz katalog i zapomocą pętelki while wczytujesz jego zawartość do tablicy
- funkcja array_rand załatwia sprawę
wozniak
Tak tez myslałem ale jak to zrobic??
strife
Sklepane w kilka minutek...
  1. <?php
  2.  
  3. $folder = 'Galeria'; // ścieżka do katalogu z obrazkami
  4. $handle = opendir($folder); // zaczepienie
  5. while ($file = readdir($handle)) // petla biggrin.gif
  6. {
  7.  
  8.  if (($file != '.') && ($file != '..')) // to tak zeby kropki byly niewidoczne
  9.  {
  10.  $i++; // dopisywanie do zmiennej $i warosci plus one biggrin.gif
  11.  $array[$i] = $file; // tworzenie tablicy tyle ile jest plikow w galeri
  12.  }
  13.  
  14. }
  15. $count = count($array); // zliczanie plikow w galerii
  16. $wylicz = rand(1, $count); // losowanie, jak w kolo fortuny biggrin.gif
  17. $zdjecie = $array[$wylicz]; // wyliczanie...
  18. echo '<img src=\"galeria/'.$zdjecie.'\" >'; // wiadomo... efekt..:)
  19.  
  20. ?>

Mówisz masz... smile.gif

Pozdrawiam!
wozniak
Dzieki wielkie a mozna jakos rozdzielic nazwe? zeby nazwa zdjecia i jego roz. mialy osobne zmienne? np.

$file$.roz
i to daj np. zdjecie.jpg
pillot
  1. <?php
  2. $plik = &#092;"index.var.html\";
  3. $plik = explode(&#092;".\", $plik);
  4. $rozszerzenie = array_pop($plik); // rozszerzenie pliku ('html')
  5. $nazwa = implode(&#092;".\", $plik); // nazwa pliku ('index.var')
  6. ?>
wozniak
Dzieki wielkie
Kataryniarz
Zmodyfikowałem to sobie dla pięciu fotek.
  1. <?
  2. $folder = &#092;"$pdir\"; // ścieżka do katalogu z obrazkami
  3. $handle = opendir($folder); // zaczepienie
  4. while ($file = readdir($handle)) // petla biggrin.gif
  5. {
  6. if (($file != '.') && ($file != '..') && ($file != 'index.php')) // to tak zeby kropki byly niewidoczne (i plik index.php)
  7. {
  8. $filename = &#092;"\".$pdir.\"/\".$file.\"\";
  9. if (file_exists($filename)) 
  10. {
  11.  $size = filesize($filename);
  12. if ($size < 20000) // losuję w tym przypadku miniaturki fotek, które sa w tym samym katalogu co duże 
  13. otki, a ich rozmiar jest mniejszy niż 20kB
  14. {
  15.  $i++; // dopisywanie do zmiennej $i warosci plus one biggrin.gif
  16.  $array[$i] = $file; // tworzenie tablicy tyle ile jest plikow w galeri
  17. }
  18. }
  19. }
  20. }
  21. $count = count($array); // zliczanie plikow w galerii
  22. $cc = 0;
  23. while ( $cc < '5' )
  24. {
  25. $cc++;
  26. $wylicz = rand(1, $count); // losowanie, jak w kolo fortuny biggrin.gif
  27. $zdjecie = $array[$wylicz]; // wyliczanie...
  28. $zdjecieduze = eregi_replace(&#092;"_.jpg\",\".jpg\",$zdjecie); // w moim przypadku miniaturki dużych fotek mają po nazwie podkreślenie, a że dale
  29.  potrzebna mi będzie nazwa dużej fotki stąd eregi_replace
  30. echo &#092;"<td height=\"190\" align=\"center\"><a href=\"galeria/$zdjecieduze\"><img src=\"galeria/$zdjecie\" width=\"120\" height=\"160\" border=\"1\"></a></td>n\";
  31. }
  32. ?>


Teraz mam pytania:

Jak zrobić, żeby nie wylosowało mi dwóch tych samych fotek, bo jest taka możliwość?
Jak wynik zapisać do pliku?

Z góry serdecznie dziękuję
hispano
Przechowanie informacji o ostatnio wylosowanym pliku nie wystarczy??
Dodajesz warunek
JEŻELI (powtorzone) {losuj ponownie}

I wszystko według mnie.
strife
Cytat(Kataryniarz @ 2005-06-06 09:29:27)
Teraz mam pytania:

Jak zrobić, żeby nie wylosowało mi dwóch tych samych fotek, bo jest taka możliwość?
Jak wynik zapisać do pliku?

Z góry serdecznie dziękuję

Na takiej zasadzie nie wylosuje Ci dwóch takich samych fotek...
  1. <?php
  2.  
  3. $iRand = rand(0, 2);
  4. $zRand = rand(0, 2);
  5. while($iRand == $zRand)
  6. {
  7.   $zRand = rand(0, 2);
  8. }
  9. echo $iRand . '<br />';
  10. echo $zRand;
  11.  
  12. ?>


fopen" title="Zobacz w manualu PHP" target="_manual
fwrite" title="Zobacz w manualu PHP" target="_manual


@hispano - ale po takim warunku jest prawdopodobieństwo że ta liczba zostanie wylosowana jeszcze raz...

Pozdro!
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.