Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Losowy obrazek jako link.
Forum PHP.pl > Forum > Przedszkole
jakuboss
Witam, mam taki oto skrypt:

  1. <?
  2. #tablica zawierająca nazwy plików - obrazków
  3. $obrazki = array("a.jpg", "b.jpg", "c.jpg", "d.jpg", "e.jpg");
  4.  
  5. #inicjujemy generator licz losowych
  6. srand ((float) microtime() * 10000000);
  7.  
  8. #wybieramy jeden losowy obrazek z tablicy
  9. $obrazek = $obrazki[array_rand($obrazki)];
  10.  
  11. #wyświetlamy losowy obrazek
  12. echo "<img src=$obrazek>";
  13. ?> 


Losuje on obrazek i go wyświetla, ale zależy mi by obrazek losowany był ze wskazanego FOLDERU (a nie tak jak w skrypcie powyżej ze wskazanych plików) oraz by obrazek ten był linkiem, ale nie do obrazka.
W folderze mam obrazki, powiedzmy x1.jpg, x2.jpg i tak dalej.

Chciałbym, żeby po wylosowaniu np: x1.jpg obrazek wyświetlał się jako link do mojej strony w taki fomracie: www.mojastrona.pl/xxxxx.php=x1 (gdzie wlasnie x1 to nazwa wylosowanego obrazka, ale bez JPG).

Trochę to zamotałem, ale może ktoś pomoże. Z góry dziekuję.
bigZbig
Moze Ci sie przyda?

  1. <?php
  2. class listDir
  3. {
  4. var $dir;
  5. var $files = array();
  6. var $handle;
  7.  
  8. function _openDir()
  9. {
  10. $this->handle = opendir($this->dir);
  11. }
  12.  
  13. function getFilesFromDir($dir)
  14. {
  15. $this->dir = $dir;
  16. $this->_openDir();
  17. $this->_readDir();
  18. $this->_closeDir();
  19. return $this->files;
  20. }
  21.  
  22. function _readDir()
  23. {
  24. if($this->handle)
  25. {
  26. while(false !== ($file = readdir($this->handle)))
  27. {
  28. if($file != "." && $file != "..")
  29. {
  30. $this->files[] = $file;
  31. }
  32. }
  33. }
  34. }
  35.  
  36. function _closeDir()
  37. {
  38. closedir($this->handle);
  39. }
  40. }
  41. ?>

Uzycie
  1. <?php
  2.  
  3. $list = new listDir;
  4.  
  5. #tablica zawierająca nazwy plików - obrazków
  6. $obrazki = $list->getFilesFromDir("path/to/dir");
  7.  
  8. #inicjujemy generator licz losowych
  9. srand ((float) microtime() * 10000000);
  10.  
  11. #wybieramy jeden losowy obrazek z tablicy
  12. $obrazek = $obrazki[array_rand($obrazki)];
  13.  
  14. #wyświetlamy losowy obrazek
  15. echo '<img src="'.$obrazek.'" />';
  16.  
  17. ?>


Klasa pisana z reki - nie gwarantuje ze zadziala

edit
-----------------------
Poprawienie i sprawdzenie dzialania klasy
jakuboss
Dzięki, ale to jeszcze nie rozwiązuje problemu z robieniem linka z obrazka, a właśnie z tym mam największy kłopot :-)
kszychu
najpierw $tmp = explode('.', $obrazek);
a pozniej <a href=jakis.adres?costam='.$tmp[0]>
jakuboss
Cytat
  1. <?php
  2.  
  3. $list = new listDir;
  4.  
  5. #tablica zawierająca nazwy plików - obrazków
  6. $obrazki = $list->getFilesFromDir("path/to/dir");
  7.  
  8. #inicjujemy generator licz losowych
  9. srand ((float) microtime() * 10000000);
  10.  
  11. #wybieramy jeden losowy obrazek z tablicy
  12. $obrazek = $obrazki[array_rand($obrazki)];
  13.  
  14. #wyświetlamy losowy obrazek
  15. echo '<img src="'.$obrazek.'" />';
  16.  
  17. ?>


Wyskakuje błąd w trzeciej linii ...




Kszychu: dzięki, zadziałało elegancko ze skryptem, który losuje zdeklarowane obrazki, więc pewnie też zadziała ze skryptem powyższym smile.gif
LBO
a includujesz gdzies plik z klasa listDir() questionmark.gif czy jest ona widoczna dla skryptu?
jakuboss
Plik z klasą includowałem.


EDIT: hmmm, w sumie teraz wrzuciłem klasę do tego samego pliku i wyskakuje błąd w linii 32:

  1. <?php
  2. return $this->files;
  3. ?>


"Parse error: parse error, unexpected T_RETURN in /home/jakubos/domains/goline.pl/public_html/img.php on line 32"
LBO
Cytat
Wyskakuje błąd w trzeciej linii ...


podaj tekst błędu...
jakuboss
Edytowałem posta wyżej.
bigZbig
@jakuboss - poprawilem klase z mojego wczesniejszego posta. Teraz powinno wszystko dzialac
jakuboss
Dzięki, ale teraz wyskakuje błąd w linii 46
"Fatal error: Call to a member function on a non-object in /xxx/img.php on line 46"

  1. <?php
  2. $obrazki = $list->getFilesFromDir("xxx/thumb");
  3. ?>
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.