Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Losowe zdjecie z folderu, zdjecia maja rozne nazwy
wozniak
post
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

Ostrzeżenie: (0%)
-----


Witam jak zrobic zeby wyswietlało sie jedno losowe zdjecie z folderu?Tylko w tym folderze są rozne nazwy:( np. foto1,zdjecie202
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Linandar
post
Post #2





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.12.2004
Skąd: Mielec

Ostrzeżenie: (0%)
-----


- otwierasz katalog i zapomocą pętelki while wczytujesz jego zawartość do tablicy
- funkcja array_rand załatwia sprawę
Go to the top of the page
+Quote Post
wozniak
post
Post #3





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

Ostrzeżenie: (0%)
-----


Tak tez myslałem ale jak to zrobic??
Go to the top of the page
+Quote Post
strife
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
  6. {
  7.  
  8.  if (($file != '.') && ($file != '..')) // to tak zeby kropki byly niewidoczne
  9.  {
  10.  $i++; // dopisywanie do zmiennej $i warosci plus one (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
  17. $zdjecie = $array[$wylicz]; // wyliczanie...
  18. echo '<img src=\"galeria/'.$zdjecie.'\" >'; // wiadomo... efekt..:)
  19.  
  20. ?>

Mówisz masz... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam!
Go to the top of the page
+Quote Post
wozniak
post
Post #5





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
pillot
post
Post #6





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 9.05.2004
Skąd: Puszów

Ostrzeżenie: (0%)
-----


  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. ?>


Ten post edytował pillot 9.03.2005, 13:07:00
Go to the top of the page
+Quote Post
wozniak
post
Post #7





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

Ostrzeżenie: (0%)
-----


Dzieki wielkie
Go to the top of the page
+Quote Post
Kataryniarz
post
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.12.2003

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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ę
Go to the top of the page
+Quote Post
hispano
post
Post #9





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 27.07.2004

Ostrzeżenie: (0%)
-----


Przechowanie informacji o ostatnio wylosowanym pliku nie wystarczy??
Dodajesz warunek
JEŻELI (powtorzone) {losuj ponownie}

I wszystko według mnie.
Go to the top of the page
+Quote Post
strife
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


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!

Ten post edytował scarface 6.06.2005, 08:46:54
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 22:03