Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Outo ongelma tiedostolistauksessa

vee [05.05.2006 17:01:04]

#

Aloitetaan nyt sillä että olen suht nyyppä PHP-asioissa, joten vaikka ongelma saattaisikin olla ilmiselvä / helppo, se on voinut minulta ihan hyvin mennä täysin ohi ymmärryksen :l

Kyseessä oleva pätkä siis on täältä otettu (https://www.ohjelmointiputka.net/koodivinkit/23682-php-tiedostolistaus), mutta sen käytössä on pienen pieni ongelma: Sanotaan vaikka että apachen juurihakemisto on /wwwroot/, jossa on index.php sun muut perustiedostot. Sitten on myös /wwwroot/tiedostot/, josta haluaisin listauksen.

Kuinka voin kyseistä koodinpätkää käyttäen tehdä tiedostolistauksen eri hakemistosta käsin kuin listattavat tiedostot itse ovat? Nyt includea sun muita vaihtoehtoja kokeilemalla käteen tulee vain erroria tiedoston luontipäivämäärästä ja koosta.

(Kokeilin tietysti muuttaa $nim = opendir('.'); -> $nim = opendir('./tiedostot'); lähes kaikin mahdollisin tavoin, ilman onnea)

Juice [05.05.2006 17:15:53]

#

Laita chdir('./tiedostot') ennen tuota opendirriä.

jideko [05.05.2006 17:23:15]

#

Itse olen muokkaillut vähän tuota Antin koodivinkkiä ja käytän nykyistä systeemiä jatkuvasti.

<html><body>
<?php
$hak=0;
$tiedk=0;
$tied=0;

$kansio=$_GET["kansio"];
if ($kansio=="")$kansio=".";
echo "<h2>Tiedostolistaus: ".$kansio."</h2>";
?>
<table width=500 style="font-family:courier new;font-size:12px">
<tr bgcolor=#DDDDDD>
<td><b>nimi</b></td><td><b>koko (t)</b>
</td><td><b>aika</b></td>
</tr>
<?php

$nim = opendir($kansio);
while ($ltied = readdir($nim)) {
    if (is_dir($kansio."/".$ltied))
        {
        echo "<tr bgcolor=#FFFFAA>";
        echo "<td><a href=\"index.php?kansio=".$kansio."/".$ltied."\">".$ltied."/</a></td>";
        echo "<td>hak</td>";
        echo "<td>".date("d.m.y H:i",filectime($kansio."/".$ltied))."</td>";
        echo "</tr>";
        $hak++;
        }
    else
        {
        echo "<tr>";
        echo "<td><a href=\"".$kansio."/".$ltied."\">$ltied</a><br></td>";
        echo "<td>".filesize($kansio."/".$ltied)."</td>";
        echo "<td>".date("d.m.y H:i",filectime($kansio."/".$ltied))."</td>";
        echo "</tr>";
        $tied++;
        $tiedk=$tiedk+filesize($kansio."/".$ltied);
        }
}
closedir($nim);
echo "</table>";
echo "<p style=\"font-family:courier new;font-size:12px\">Yhteensä ".$hak." hakemisto(a) ja ".$tied." tiedosto(a), koko ".round(($tiedk/pow(2,20)),2)."Mt</p>";
?>
</body></html>

vee [05.05.2006 17:40:48]

#

jidekon vastaus vaikutti turhan monimutkaiselta ja Juicen vastaus tuotti jo halutun tuloksen (arvasin että jostain näin pienestä olisi kyse), joten kiitos molemmille nopeasta avusta :)

Vastaus

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

Tietoa sivustosta