Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Losowy obrazek z różnych katalogów
Forum PHP.pl > Forum > Przedszkole
Aklim...
Cześć
przeszukałem forum, ale nie znalazłem tego co mi jest potrzebne.
Wszędzie jest sposób z nazwami obrazków w tablicy.
Ja potrzebuję wyświetlać jeden losowy obrazek z katalogów.
Jeden losowy obrazek spośród katalogów wpisanych do tablicy, a najlepiej jeśli zadeklarowanych w jakimś pliku tekstowym (nie chcę edytować kodu jeśli dodam jeszcze jakiś katalog który ma być uwzględniany przy losowaniu).

Jak zwykle proszę Was o pomoc smile.gif

Adiasz
mozsz zrobic to tak:
1. odczytac podkatalogi katalogu glownego
2. wylosowac katalog
3. odczytac wszystkie pliki z wylosowanego katalogu
4. wylosowac plik i go wyswietlic

przydatny link: http://pl.php.net/manual/pl/function.opendir.php masz tam fajny przyklad
Aklim...
1. odczytac podkatalogi katalogu glownego
2. wylosowac katalog

nie, nie. Nie wszystkie katalogi w głównym mają być uwzględniane w losowaniu. Tylko te które miałbym w pliku txt zadeklarowane.
Tzn. jeden spośród tych wymienionych w pliku txt byłby losowany, a z niego losowany plik.

Tyle, że ja teorię jako tako mam. Mniej więcej wiem jakich funckji użyć. Gorzej to napisać.
Jeśli ktoś umie z głowy to bardzo proszę o pomoc smile.gif
mike
galeries.txt
Kod
folder
inny_folder
jakiś/ukryty/folder


Do tego w kolejności:
1. file() - ładujesz nazwy do tablicy
2. array_rand() - losujesz nazwę
3. Masz folder więc przeglądasz jego zawartość ładując do tablicy. Pytanie jak poskutkuje moim skokiem tętna, bo na forum znajdziesz tysiąc sposobów "jak?" to zrobić tongue.gif
4. array_rand() - losujesz obrazek z tablicay obrazków
smile.gif
Aklim...
Ok, mam takie coś:
  1. <?php
  2.  
  3. if (file_exists('./includes/screen_katalogi.txt') && is_readable('./includes/screen_katalogi.txt'))
  4. {
  5. $katalogi = file("./includes/screen_katalogi.txt");
  6. $katalog = array_rand($katalogi);
  7. $handle = opendir($katalog.'/'); // zaczepienie
  8. while ($file = readdir($handle)) // petla
  9. {
  10. $file_type = strrchr($file, ".");
  11. $is_image = eregi("jpg|gif|png|jpeg",$file_type);
  12. if (($file != '.') && ($file != '..') && $is_image) // kropki niewidoczne
  13. {
  14. $i++; // dopisywanie do zmiennej $i warosci plus one
  15. $array[$i] = $file; // tworzenie tablicy tyle ile jest plikow w galeri
  16. }
  17. }
  18. $count = count($array); // zliczanie plikow w galerii
  19. $wylicz = rand(1, $count); // losowanie
  20. $screen_zdjecie = $array[$wylicz]; // wyliczanie...
  21. $screen_katalog = $katalog;
  22. }
  23. else
  24. {
  25. $screen_zdjecie = 'blad_niema.jpg';
  26. $screen_katalog = '.';
  27. }
  28. ?>


plik screen_katalogi.txt:
Cytat
galeria/screeny/1
galeria/screeny_poboczne/360


wyswietlanie ( {SCREEN_KATALOG} i {SCREEN_ZDJECIE) zastępowane są przez zmienne $screen_zdjecie i $screen_katalog):
  1. <a href="{SCREEN_KATALOG}/{SCREEN_ZDJECIE}">
  2. <img scr="{SCREEN_KATALOG}/miniaturki/{SCREEN_ZDJECIE}">
  3. </a>


nie działa... i nie mogę podać błędu, bo działa to całkiem losowo - raz, że katalogu nie może otworzyć, raz, że jakiegoś 0/ czasem 1/, albo r/ itd, czasem ładuje się bez błędu, ale nie wyświetla się miniaturka jak ma się wyświetlać....
katalogi i miniturki istnieją.
gdzie błąd? sadsmiley02.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-2025 Invision Power Services, Inc.