Avatar billede hmogensen Nybegynder
17. januar 2012 - 22:06 Der er 7 kommentarer og
1 løsning

Vis filer (IKKE undermapper) i aktuel mappe

Jeg ønsker at lave automatiske link til nye filer i en given mappe.

Kode herunder giver mig filnavn i aktuel mappe, jeg kan derfor også vælge undermapper, det er ok.

Jeg har fjernet . og .. men hvordan fjerner jeg de andre undermapper (de tre første linier i outputtet), så der kun bliver en liste med filnavne. Jeg kan klare det med ASP, men her må jeg søge hjælp.

<?php
if ($dir = @opendir(".")) {
    while (($fil = readdir($dir)) !== false) {
        if ($fil != "." && $fil != "..")    {
            echo $fil . "<br>";
        }
    }
    closedir($dir);
}
?>

OUTPUT:
Arkiv
Include
Images
index.html
phptest1.php
phptest2.php
test1.php
test2.php
Avatar billede Slettet bruger
17. januar 2012 - 22:33 #1
Du kan tjekke om det er en mappe med den her:
http://php.net/manual/en/function.is-dir.php
Avatar billede hmogensen Nybegynder
18. januar 2012 - 01:42 #2
Hej

Desværre virker det ikke, jeg har indsat en If(is_dir($fil)) i koden. I outputtet kan man se at denne BOOLEAN får værdien FALSK for alle elementer både filer og mapper. is_filer() giver samme ensformige reslutat.


<?php
if ($dir = @opendir("..")) {
  while (($fil = readdir($dir)) !== false) {
    if ($fil != "." && $fil != "..")    {
    if (is_dir($fil))
      {echo "Boolean TRUE: ". $fil ."<br>";}
    else   
      {echo "Boolean FALSE: ". $fil ."<br>";}
    }
  }
closedir($dir);
}
?>


OUTPUT:

Boolean FALSE: Arkiv
Boolean FALSE: Include
Boolean FALSE: Images
Boolean FALSE: index.html
Boolean FALSE: phptest1.php
Boolean FALSE: phptest2.php
Boolean FALSE: test1.php
Boolean FALSE: test2.php
Avatar billede The_Buzz Novice
18. januar 2012 - 08:53 #3
Er det på en Windows maskine?
Avatar billede showsource Seniormester
18. januar 2012 - 09:41 #4
$dir = "./";
$d = dir($dir);
    while (false !== ($file = $d->read())) {
        if (is_file($dir.$file)) {
            echo"<br />". $file;
        }     
    }
$d->close();
Avatar billede hmogensen Nybegynder
18. januar 2012 - 14:32 #5
--> The_Buzz
Jeg arbejder under Vista ved hjælp at EasyPHP i en standard opsætning. Når kodestumpen uploades til APACHE-serveren giver den samme fejl. Problemet ligger vist ikke her.


--> showsource
Det virker Mange tak - har du også tid til en forklaring?
Hvis du vil have point må du lægge et svar.

For nu at blive klogere, har jeg prøvet mig lidt frem. Så vidt jeg kan se ligger hele forskellen i denne linie:

  if (is_file($dir.$file))

På //http://www.w3schools.com/php/func_directory_dir.asp kan man finde en forklaring og en kode, MEN den virker heller ikke, idet den også viser både filer og mapper.

Jeg har afprøvet to udgaver (d.v.s med ($dir.$file) og med ($file)). Resultatet ses herunder, kun den ene kan bruges.

Spørgsmålet er så: Hvad sker der lige her: ($dir.$file)?

Output:
Med kodelinien: if (is_file($file)):
Mappenavn: Include
Mappenavn: Images
Mappenavn: index.html
Mappenavn: phptest.php
Filnavn: phptest1.php
Filnavn: test1.php
Mappenavn: test2.php


Med kodelinien: if (is_file($dir.$file))
Mappenavn: Include
Mappenavn: Images
Filnavn: index.html
Filnavn: phptest.php
Filnavn: phptest1.php
Filnavn: test1.php
Filnavn: test2.php
Avatar billede showsource Seniormester
23. januar 2012 - 11:36 #6
Hmm ved ikke lige, men når man har med filer/dirs at gøre i php, er det en go' ide at definere den fulde harddisk sti, fordi så vil det virke uanset php opsætning.
Avatar billede showsource Seniormester
23. januar 2012 - 11:40 #7
F.eks.
$diskpath = "/var/www/domain/html";
$dirlist = "/undermappe/";

$dirpath = $diskpath.$disklist;
Avatar billede hmogensen Nybegynder
02. februar 2012 - 00:52 #8
Har ikke endnu ikke helt set lyste, men løsningen må være til at arbejde videre med - og så kommer det vel.

Tak for hjælpen
Henrik
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester