Gå til innhold

Directorylisting med php uten . og ..


Anbefalte innlegg

Skrevet

Jeg ønsker å vise alle undermappene i en bestemt mappe på en side jeg lager, filer trengs ikke å vises (skal helst ikke vises).

Jeg ønsker også at . og .. ikke skal vises.

 

Er det noen som kunne hjelpe meg litt med dette? eventuelt som har et script som jeg kunne modifisert litt?

Videoannonse
Annonse
Skrevet

I while-løkken din(som printer alle undermapper) kan du legge in et if-statement før annen kode:

while(...)
{
   if($dirName == '.' || $dirName == '..')
       continue;

   ...
}    

Skrevet
Jeg er muligens ganske nybegynner  :blush: men jeg skjønte faktisk ikke scriptet ditt nazgul, kunne vær så snill forklare meg litt?

6397720[/snapback]

Du trenger egentlig ikke å skjønne så mye av selve funksjonen, så lenge du klarer å bruke den :)

 

Funksjonen mottar to parametere:

Det første en stien (path) til mappen du vil ha listet opp, f.eks. minmappe/minundermappe/ (eller bare . (punktum) for å liste nåværende mappe

Andre parameter er en callback-funksjon. Dvs. en funksjon som blir kalt for hver runde i funksjonen. I dette tilfellet, blir callback-funksjonen kalt på hver fil i mappen. Callback-funksjonen må returnere true eller false. True vil si en fil du vil ha, false vil si en fil du ikke vil ha. Dersom du ser på eksemplene i den andre posten, burde det gå relativt klart frem hva jeg mener med denne funksjonen. Merk at denne funkonen kan være enten en PHP-funksjon som allerede eksisterer, eller en du lager selv. (se eksempler i andre posten)

Skrevet (endret)

skal du kun vise mapper?

<?php
$mappe = scandir('mappe/');
foreach($mappe as $key => $file)
{
   if(is_dir($file) && substr($file, 0, 1) != '.')
       echo $file
}
?>

Endret av hockey500
Skrevet (endret)

Hvorfor bruke foreach?

 

$content = scandir(PATHTILMAPPA);
$count = count($content);
for ($i = '2'; $i < $count; $i++ ){
   if (is_dir($content[$i]))
       echo $content[$i].'<br>';  
}

Endret av allyse
Skrevet (endret)

hvorfor ikke? den er tross alt laget for å gjøre akkurat det vi driver med, så jeg ser ikke poenget med å bruke en for-løkke. dessuten blir koden kortere med foreach, og mer oversiktlig

 

EDIT: og foreach er sikkert raskere også

Endret av hockey500
Skrevet
hva har man egentlig foreach for da? for kan jo gjøre akkurat det samme?

6398949[/snapback]

 

For kan ikke brukes så lenge du ikke kjører mot en index. foreach lager en index.

Skrevet
skal du kun vise mapper?

<?php
$mappe = scandir('mappe/');
foreach($mappe as $key => $file)
{
   if(is_dir($file) && substr($file, 0, 1) != '.')
       echo $file
}
?>

6397927[/snapback]

Jeg skal kunne liste mappene og gjerne få laget en link til de også

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...