Avatar billede simon_gs_13 Nybegynder
04. februar 2006 - 21:34 Der er 6 kommentarer og
3 løsninger

List indhold af mapper med ikoner

Jeg har dette script, som lister indholdet af en mappe og bruger nogle forud defineret ikoner. Den tager udgangs punkt i fil extension. Men nu er mit spørgsmål: Hvordan får jeg den til at vise et mappe ikon, da en mappe ikke har en fil extension

----- list.php ------
<?php
$mydir        = "images/";            //Mappen filerne ligger i (husk slash (/) til sidst)
$icondir    = "icons/";            //Mappen hvor icons filerne fra apache ligger i (husk slash (/) til sidst)

if ($handle = opendir($mydir)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            //finder filens størrelse
            $filesize    = filesize($mydir.$file);
         
            //finder extension
            $pathinfo    = pathinfo($mydir.$file);
            $extension    = $pathinfo["extension"];
            $domain        = $_SERVER["HTTP_HOST"]."/";
              $extension    = strtolower($extension);

            if (($extension == 'jpg') OR ($extension == 'gif') OR ($extension == 'png') OR ($extension == 'bmp')){
            $extimage    = 'image2.gif';
            }
            else if (($extension == 'mpeg') OR ($extension == 'avi')){
            $extimage    = 'movie.gif';
            }
            else if (($extension == 'html') OR ($extension == 'php')){
            $extimage    = 'index.gif';
            }
            else if (($extension == 'doc')){
            $extimage    = 'text.gif';
            }
            else if (($extension == 'pdf')){
            $extimage    = 'pdf.gif';
            }
            else if (($extension == 'rar') OR ($extension == 'zip')){
            $extimage    = 'compressed.gif';
            }
            else {
            $extimage    = 'unknown.gif';
            }
         
            //udskriver til skærm
            echo "<a href='#'><img src='http://".$domain.$icondir.$extimage."' title='".$extension."' border='0'></a> <a href='".$mydir.$file."'>".$file."</a> (".$filesize." bytes)<br>";
        }
    }
    closedir($handle);
}
?>
Avatar billede simon_gs_13 Nybegynder
04. februar 2006 - 21:38 #1
Hov glemte lige et lille tillægs spørgsmål. Hvordan skal jeg lave scriptet så den viser det sådan

-hovedmappe
  |-undermappe
    |-filer
  |- filer i hovedmappe

/ Simon
Avatar billede barklund Nybegynder
04. februar 2006 - 21:39 #2
For eksempel som:


else if (is_dir($mydir.$file)) {
$extimage    = 'folder.gif';
}
else {
$extimage    = 'unknown.gif';
}

:)

--
Morten Barklund
Avatar billede barklund Nybegynder
04. februar 2006 - 21:39 #3
Det er straks et større spørgsmål :)
Avatar billede simon_gs_13 Nybegynder
04. februar 2006 - 21:43 #4
---> Barklund Tak, selvfølgelig den havde løsning havde jeg ikke tænke på.
/ Simon
Avatar billede barklund Nybegynder
04. februar 2006 - 21:46 #5
Jeg lægger gerne et svar for det, men den rekursive løsning med undermapper er meget omfattende og ikke noget, jeg lige umiddelbart kan overskue - der skal jo indentering til :)
Avatar billede whatever Nybegynder
05. februar 2006 - 00:08 #6
Jeg havde på et tidspunkt lavet en klasse til generering af en menu struktur, selvfølgelig med et undeligt antal niveauer. Hvad har man andet at lave en lørdag aften end at omskrive den, til at liste en filstruktur.

Scriptet kan ses i aktivitet på http://www.efusion.it/exp/class.dirtree.php. Sourcen kan ses på http://www.efusion.it/exp/class.dirtree.phps.

Det er simpelt at benytte klassen. Gem class.dirtree.phps og omdøb den til class.dirtree.php. Indkluder den i dit script. Klassen startes med følgende linier:

$DirTree = new DirTree();
$DirTree->SetStartPath("./"); // Stien til mappen der skal startes i
$DirTree->SetIconPath("./icons/"); // Stien til mappen med ikonerne
$Output = $DirTree->CreateDirTree(); // $Output indeholder fil strukturen

Ønsker du at ændre ikoner eller tilføje flere ikoner, går du det i metoden FormatItem() i klassen. Ønsker du at ændre på de enkelt fil/biblioteks linier i filstrukturen gøres dette også i metoden FormatItem().

Håber den kan bruges ;-)
Avatar billede whatever Nybegynder
05. februar 2006 - 00:26 #7
Jeg har ændret lidt på klassen, så man kan slå ikonerne til og fra, samt styre indrykningen.
Eksempel med ikoner
$DirTree = new DirTree();
$DirTree->SetStartPath("./");        // Start dir
$DirTree->SetIconPath("./icons/");    // Dir med ikoner
$DirTree->SetUseIcons(true);        // Brug ikoner. Standard værdien er false
$DirTree->SetIndent(10);        // Indrykning i pixels. Standard værdien er 10 pixels
$Output = $DirTree->CreateDirTree();    // $Output indeholder strukturen

Eksempel uden ikoner
$DirTree = new DirTree();
$DirTree->SetStartPath("./");        // Start dir
$DirTree->SetIndent(10);        // Indrykning i pixels. Standard værdien er 10 pixels
$Output = $DirTree->CreateDirTree();    // $Output indeholder strukturen

Live eksempel uden ikoner kan ses på http://www.efusion.it/exp/class.dirtree2.php.
Avatar billede simon_gs_13 Nybegynder
05. februar 2006 - 12:46 #8
Perfekt begge dele var det jeg stod og skulle bruge.

/ Simon
Avatar billede barklund Nybegynder
05. februar 2006 - 13:01 #9
Well, tark for points selvom jeg leverede den mindste del :)
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