Pitäis saada sivuille kuvamäärälaskuri. Oon yrittäny tehdä sitä niin että käy globilla kaikki kansiot läpi ja countilla lasken kuvat muttei ole onnistunut.
Kansiot on näin
profile -- käyttäjien kansiot on täällä esim. profile/Xuvo
Käyttäjillä on omia kansioita esim. profile/Xuvo/Kuvia
Eli nyt pitäis saada laskettua paljon on kuvia käyttäjillä yhteensä
Jos laitat sen koodin mikä ei onnistunut niin katsotaan mikä siinä on mennyt pieleen.
no yksinkertaisesti vaikka näin
<? /*toimii php 5*/ $kuvat = scandir("/profile/xuvo/kuvia"); $maara = count($kuvat) - 2; /*ainakin php 4*/ $kansio = opendir("/profile/xuvo/kuvia"); while(readdir($kansio)) $i++; $i -= 2; ?>
nuo edellyttää ettei kansiot sisällä muita kuin haluttuja kuvia
No toimiiko toi
Tolleen että se ettis kaikki käyttäjät ja käyttien kansiot
hups ei tullut luettua kunnolla viestiä ;)
eli silloin sun pitää käydä läpi kaikki kansion sisältämät
kansiot eli jotenkin
<? /*haetaan profile kansion sisältö taulukkoon*/ $kansiot = scandir("/profile"); /*käydään taulukko läpi, mutta jätetään kaksi ekaa pois(. ja ..)*/ for($i = 2; $i < count($kansiot);$i++) { /*jos arvo on kansio niin scannataan taas ja lisätään sen määrä määrään mutta vähennetään taas kaksi (. ja ..) */ if(is_dir($kansiot[$i])) $maara += scandir($kansiot[$i]) - 2; /*muuten lisätään määrän arvoa yhdellä*/ else $maara++; } ?>
toi siis olettaa että kansio profile sisältää vain käyttäjien kansioita tai kuvia ja et käyttäjän kansio sisältää vain kuvia
No pitää vähän muokata tota että saan toimii niin että käyttäjien kansiot sisältää kansioita.
Omat taidot ei taida riittää
<? function laske_tiedostot($dir) { /*haetaan profile kansion sisältö taulukkoon*/ $kansiot = scandir($dir); /*käydään taulukko läpi, mutta jätetään kaksi ekaa pois(. ja ..)*/ for($i = 2; $i < count($kansiot);$i++) { /*jos arvo on kansio niin scannataan taas ja lisätään sen määrä määrään mutta vähennetään taas kaksi (. ja ..) */ if(is_dir($kansiot[$i])) $maara += laske_tiedostot($dir . "/" . $kansiot[$i]); /*muuten lisätään määrän arvoa yhdellä*/ else $maara++; } return $maara; } echo "Tiedostoja: " . laske_tiedostot("profile"); ?>
Homman pitäisi hoitua tällä rekursiivisellä funktiolla. En tosin ole testannut.
Sanoo tiedostoja 2 vaikka niitä on 4 eli ei mee kansioita läpi.
Huomasin että se laskee kansioiden määrän.
Rekursiivinen glob:
function globr($dir, $pattern, $flags = NULL) { $files = glob("$dir/$pattern", $flags); foreach( glob("$dir/*", GLOB_ONLYDIR) as $subdir ) { $files = array_merge($files, globr($subdir, $pattern, $flags)); } return $files; } $dir = 'profile/xuvo'; // hakemisto $pattern = '{*.gif,*.jpg,*.jpeg}'; // huomioitavat tiedostopäätteet $files = globr($dir, $pattern, GLOB_BRACE); echo '<pre>yhteensä ',count($files), " tiedosto(a).\n\n"; print_r($files);
Kiitos tuo toimii niinkuin pitää
Niin voisin tähän samaan pistää kysymyksen miten saan tehtyä satunnainen kuva toiminnon kuvat on samallalailla kansioissa kuin tuossa kuva määrä laskurissa
Aihe on jo aika vanha, joten et voi enää vastata siihen.