Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] losowy obrazek z folderu
Forum PHP.pl > Forum > Gotowe rozwiązania
sztibiribi
witam. napisałem prosty skrypt do wyświetlania z danego folderu losowego obrazka który wygląda mniej więcej tak:
  1. $folder = opendir($folder_z_obrazkami);
  2. $j = 0;
  3. while(false !=($plik = readdir($folder))){
  4. if($plik != "." && $plik != ".."){
  5. $obrazki[$j]= $plik;
  6. $j++;
  7. }
  8. }
  9. closedir($folder);
  10. $losowy=rand(0,count($obrazki)-1);
  11. <img src="'.$folder_z_obrazkami.'/'.$obrazki[$losowy].'" align="top">

później przerobiłem go aby wyświetlał w pętli wyniki wraz z innymi danymi pobieranymi wcześniej z tabeli i wyświetlał wyniki wedle mojego widzi misie ..
  1. $folder = opendir($folder_z_obrazkami);
  2. $j = 0;
  3. while(false !=($plik = readdir($folder))){
  4. if($plik != "." && $plik != ".."){
  5. $obrazki[$j]= $plik;
  6. $j++;
  7. }
  8. }
  9. closedir($folder);
  10.  
  11. $czesci = explode("<h", $caleonas);
  12. for($i = 1, $x = count($czesci); $i < $x; $i++)
  13. {
  14. $losowy=rand(0,count($obrazki)-1);
  15. if ($i % 2 == 0)
  16. {
  17. echo ' <div id="DUZY">
  18. <div id="LEWY1"><center><img src="'.$folder_z_obrazkami.'/'.$obrazki[$losowy].'" align="top"></center></div>
  19. <div id="PRAWY1"><h'.$czesci[$i].'</div>
  20. </div><br>';
  21. }
  22. else
  23. {
  24. echo ' <div id="DUZY">
  25. <div id="LEWY2"><h'.$czesci[$i].'</div>
  26. <div id="PRAWY2"><center><img src="'.$folder_z_obrazkami.'/'.$obrazki[$losowy].'" align="top"></center></div>
  27. </div><br>';
  28. }}


wszystko działa pięknie.. ale za nic nie mogę sobie poradzić, jak zrobić, aby wyświetlane obrazki się nie powtarzały (tu, jeśli w jakimś folderze jest mała ilość obrazków, czasem jeden obrazek potrafi wyświetlić się z 3 razy.. chciałbym tego uniknąć);/ pomoże ktoś? mecze się z tym kilka dni już..
f1xer
hmm może zapisuj sobie do tablicy już wylosowane elementy a po każdym losowaniu sprawdzaj czy ten element już został wylosowany, jeżeli tak to losuj jeszcze raz, jeżeli nie to zapisz element do tablicy wylosowanych i idź dalej. Wierzę, że sam przełożysz to na php przydatne może być in_array
pgrzelka
możesz w pętli usunąć z tablicy wylosowany element funkcją unset($losowy);

możesz też użyć funkcji array_shuffle do pomieszania tablicy, i wtedy nie musisz losować obrazka a wyświetlasz po kolei
konradkw
siema!

Chcialem uzyc tego skryptu u gory:

  1. <?
  2. $folder_z_obrazkami = 'images/projekty';
  3. $folder = opendir($folder_z_obrazkami);
  4. $j = 0;
  5. while(false !=($plik = readdir($folder))){
  6. if($plik != "." && $plik != ".."){
  7. $obrazki[$j]= $plik;
  8. $j++;
  9. }
  10. }
  11. closedir($folder);
  12. $losowy=rand(0,count($obrazki)-1);
  13. echo '<img src="'.$folder_z_obrazkami.'/'.$obrazki[$losowy].'">';
  14. ?>


ale niezaleznie co wpisze w

$folder_z_obrazkami = 'images/projekty';

zawsze dostaje to:

Warning: opendir(../include/images/projekty) [function.opendir]: failed to open dir: Nie ma takiego pliku ani katalogu in violin/include/blog.php on line 8

Warning: readdir() expects parameter 1 to be resource, boolean given in violin/include/blog.php on line 10

Warning: closedir() expects parameter 1 to be resource, boolean given in violin/include/blog.php on line 16


gdzie linijka 8 to:
$folder = opendir($folder_z_obrazkami);

linijka 10 to:
while(false !=($plik = readdir($folder))){

a linijka 16 to:
closedir($folder);


Pomozecie prosze?

Z gory dziekuje!


IceManSpy
Przecież masz napisane:
Warning: opendir(../include/images/projekty) [function.opendir]: failed to open dir: Nie ma takiego pliku ani katalogu in violin/include/blog.php on line 8
Musisz pokombinować ze ścieżką.
Irmina15
Dobre pytanie, też chciałabym wiedzieć smile.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-2024 Invision Power Services, Inc.