Losowo Wyświetlane Zdjęcie - Jak Dodać Pod Katalogi


(asziatko) #1

Witam,

Znalazłem taki skrypt PHP w Sieci o wyświetlaniu losowego zdjęcia. Śieżka gdzie zdefiniowany jest katalog ze zdjęciami jest w takiej formie jak

<?php $katalog = 'miniaturki/zdjecia'

; Cały skrypt wygląda tak

<?php $katalog = 'miniaturki/zdjecia/; (tu mam pare pod katalogów które chciał bym żeby były widoczne w losowaniu zdjęcia)

$n=0;

if(@$d = opendir($katalog)){

while (!(($plik = readdir($d)) === false)) {

if(stristr($plik, '.jpg') or stristr($plik, '.jpeg') or stristr($plik, '.gif') or stristr($plik, '.bmp') or stristr($plik, '.png'))

{

$n++;

$losowy_obr[$n] = "$plik";

}

}

closedir($d);

if(!empty($losowy_obr)) {

$losowa_poz = array_rand($losowy_obr);                                           

echo "

| " |
"; } else echo 'Katalog Jest Pusty'; } else echo 'Przepraszamy Wystąpił Błąd!'; ?[/code] I mam problem jak dodać do ścieżki
[code]?php $katalog = 'miniaturki/zdjecia'
; pozostałe pod katalogi z katalogu zdjęcia?. Tych pod katalogów w katalogu zdjęcia jest 16 i chciał bym żeby były widoczne w losowaniu zdjęcia. Jak to zrobić?. Probowałem zrobić to tak

?php $katalog = 'miniaturki/zdjecia/*';

Ale bez owocnie.


(adpawl) #2

tak nie zrobisz... poczytaj w sieci o rekursywnym przetwarzaniu katalogów.

Zobacz np.: http://luktom.net/blog/112-iteratory-w- ... ryiterator

-masz tam przykład uzycia DirectoryIterator


(asziatko) #3

adpawl przeglądnąłem linka od Ciebie ale przyznam że nie jestem mocny w PHP i niezbyt wiem jak zmodyfikować ten skrypt żeby wyświetlić ścieżki wszystkich plików w katalogu oraz jego podkatalogach.


(adpawl) #4

Jeśli w katalogach są tylko obrazki, to np.:

<?php

$katalog = 'miniaturki/zdjecia';

$rdi=new RecursiveIteratorIterator(new RecursiveDirectoryIterator($katalog));


$tab=array();

foreach($rdi as $file) {

array_push($tab, $file->getPathname());

}

shuffle($tab);


if(count($tab)<1) echo 'Katalog Jest Pusty';

else

echo '

| '.$tab[0].' |
'; ?[/code] a jeśli nie tylko, to dodatkowo filtrujesz po rozszerzeniu:
[code]?php $katalog = 'miniaturki/zdjecia'; $rdi=new RecursiveIteratorIterator(new RecursiveDirectoryIterator($katalog)); $tab=array(); foreach($rdi as $file) { $plik=$file-getPathname(); if(ereg("(.jpg|.jpeg|.gif|.png){1}$",$plik)) array_push($tab,$plik); } shuffle($tab); if(count($tab)1) echo 'Katalog Jest Pusty'; else echo '

| '.$tab[0].' |
'; ?


(asziatko) #5

adpawl , naprawdę wielkie dzięki za pomoc w skrypcie. Właśnie oto mi chodziło, tylko wtyd się przyznać ale nie znam jeszcze tak dobrze PHP, wiem co bym chciał żeby skrypt wykonywał ale z jego modyfikacją czy napisaniem to całkiem źle. Raz jeszcze dzięki, skrypt jest już na stronie i losuje zdjęcie ze wszystkich pod katalogów katalogu zdjecia.