Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] losowy obrazek z folderu, jak przerobic skrypt aby sie nie powtarzaly jpgi
sztibiribi
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 25.08.2009

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


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ż..
Go to the top of the page
+Quote Post
f1xer
post
Post #2





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


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


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
pgrzelka
post
Post #3





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

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


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


--------------------
Go to the top of the page
+Quote Post
konradkw
post
Post #4





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


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!


Go to the top of the page
+Quote Post
IceManSpy
post
Post #5





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


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


--------------------
Go to the top of the page
+Quote Post
Irmina15
post
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 19.08.2012

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


Dobre pytanie, też chciałabym wiedzieć smile.gif


--------------------
Ładne domki górskie dla wybrednych. - http://www.krynica-domki.pl/domek-goralski
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: 19.08.2025 - 20:41