Lav en liste over filer i en mappe

tutorials » php, asp, perl
skrevet 11/6 2009
af Frederik

StjerneStjerneStjerneStjerneStjerneStjerneStjerneStjerneStjerneStjerne
Jeg ønskede at lave et script, der kunne vise alle filer i en mappe. Denne lille løkke er resultatet på flere timers søgning. Du skal dog bemærke at koden opfange ALLE filer (også usynlige, database-filer, osv.).


#1
Den første del er egentlig ret simpel:

<?php
$mappe = dir("DIN MAPPE HER");
while(($fil = $mappe->read()) !== false) {
?>


$mappe = dir("DIN MAPPE HER"); sætter variablen $mappe med stien til den mappe, hvor dine filer ligger i. Selve løkken ligger her: while(($file = $mappe->read()) !== false) {. Den bliver ved med at udskrive nye løkker, indtil der ikke er flere filer.
Illustration
(klik for zoom)
#1


#2
Næste skridt er så selve den kode, der ligger i løkken. Den kan sættes forskelligt, men her har jeg valgt kun at lave en liste over filerne.

Filnavn: <?=$fil?><br>


Ret simpelt - og til sidst afslutningen:

<?php } ?>


Nu har vi en liste over, hvad vores mappe indeholder - smart ikke? Nu behøver du egentlig ikke mere, men hvis du vil gøre den endnu smartere så fortsæt blot med at læse.
#2


#3
Åben filer
For at udvide koden lidt kunne vi tilføje et link til at åbne filen. Lad os prøve det.

<?php
$mappe = dir("DIN MAPPE HER");
while(($fil = $mappe->read()) !== false) {
?>
Filnavn: <a href="<? echo $mappe . "/" . $fil; ?>"><?=$fil?></a><br>
<?php } ?>


Nu kan man også klikke på hver enkel fil og åbne den.
#3


#4
Musikbiblotek med afspiller
For at gøre det endnu mere avanceret vil man måske vælge at lave et musikbiblotek, hvor filerne kan blive afspillet direkte på samme side som listen. Der skal først tilføjes denne kode nedenunder eller ovenover listen:

<?php
$funktion = addslashes($_GET["funktion"]);
$spil = addslashes($_GET["spil"]);
if ($funktion == "spil" && $spil) { ?><embed src="<?=$spil?>"
width="300" height="40" autostart="false" loop="FALSE">
</embed><br><br>
<?php } ?>


Derefter skal løkken også ændres en smule:

<?php
$mappe = dir("DIN MAPPE HER");
while(($fil = $mappe->read()) !== false) {
?>
Filnavn: <a href="?function=spil&spil=<? echo $mappe . "/" . $fil; ?>"><?=$fil?></a><br>
<?php } ?>
#4


#5
Og vupti, så har vi et lille musik biblotek.

Her er min kode, som den ser ud. Den kan dog afvige fra dit eget resultat:

<?php
$funktion = addslashes($_GET[ "funktion"]);
$spil = addslashes($_GET[ "spil"]);
if ($funktion == "spil" && $spil) { ?><embed src="<?=$spil?>"
width="300" height="40" autostart="false" loop="FALSE">
</embed><br><br>
<?php } ?>
<?php
$mappe = dir("DIN MAPPE HER");
while(($fil = $mappe->read()) !== false) {
?>
Filnavn: <a href="?function=spil&spil=<? echo $mappe . "/" . $fil; ?>"><?=$fil?></a><br>
<?php } ?>


Held & lykke med det!
#5