Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Alihakemiston läpikäyminen

Väpä [22.10.2007 21:08:06]

#

Jou

Etusivulle pitäs saada homma joka echottaa satunnaisen kuvan joka on osoitteessa esim. /2007/10/22/kuva.jpg tai /2006/06/13/kuva2.jpg. Mikä se on se mystinen koodi joka käy läpi kansion ja kaikki sen alihakemistot ja tekee niist vaik listan josta voidaan sit arpoo kuva.

Eli yksinkertaisesti mikä koodi käy läpi hakemiston ja sen kaikki alihakemistot??? Onko siihen mitään yksinkertaista tapaa?????

tsuriga [22.10.2007 21:37:36]

#

glob, is_dir, rand. Varmasti tuommoinen on jossakin valmiinakin, avainsanoja "php", "recursive", "directory".

Antti Laaksonen [22.10.2007 21:44:35]

#

Tuossa on esimerkki, joka noutaa kuvat siitä hakemistosta, jossa skripti suoritetaan, sekä kaikista alihakemistoista.

<?php

function haku($polku, $tyypit) {
    $hak = opendir($polku);
    $taulu = array();
    while (($nimi = readdir($hak)) !== false) {
        if ($nimi == "." || $nimi == "..") continue;
        if (is_dir($polku . $nimi)) {
            $taulu = array_merge($taulu, haku($polku . $nimi . "/", $tyypit));
        } elseif (in_array(strtolower(substr($nimi, -4)), $tyypit)) {
            $taulu[] = $polku . $nimi;
        }
    }
    closedir($hak);
    return $taulu;
}

$kuvat = haku("./", array(".png", ".gif", ".jpg"));
foreach ($kuvat as $kuva) {
    $kuva = substr($kuva, 2);
    echo "<img src=\"$kuva\"><br>$kuva<hr>";
}

?>

Hakemistoja ei kyllä kannata koluta joka kerta, kun sivu ladataan, vaan kuvien lista kannattaa koostaa vain, kun uusia kuvia tulee tai vanhoja poistuu. Sitten kun kuvien nimet ovat taulukossa, kuvan voi arpoa vaikka funktiolla array_rand.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta