Avatar billede goldeneyes Nybegynder
23. november 2004 - 19:43 Der er 10 kommentarer

"Stifinder" i php

Hey.
Jeg er igang med at lave et lidt mere dynamisk system på en side, hvor jeg godt kunne tænke mig at se filstrukturen i hjmmesidens mapper. Altså et system hvor jeg kan se mapper og filer, samt bladre rundt i mapperne.

Har bikset lidt medfunktionen glob, men kan ikke lige se hvordan jeg kører undermapper ind, så jeg kan bladre noget bedre:

function file_size_convert($filesize) {
    $sizetitles = array('B', 'KB', 'MB', 'GB', 'TB');
    $tmpcount = 0;
    while($filesize >= 1024 && $tmpcount < count($sizetitles)) {
        $filesize /= 1024;
        $tmpcount++;
    }
    return sprintf('%0.2f', $filesize) . ' ' . $sizetitles[$tmpcount];
}
$mappe = "language";


$filer = array();
if ($handle = opendir($mappe)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != ".." && !is_dir($file)) {
            $filer[]= $file;
        }
    }
    closedir($handle);
}


sort($filer);
reset($filer);
foreach ($filer AS $val) {
  $created = date("d-m-Y H:i:s", filemtime($mappe.$val));
    $modified = date("d-m-Y H:i:s", filectime($mappe.$val));
    $size = file_size_convert(filesize($mappe.$val));

    $size = file_size_convert(filesize($mappe.$val));

    echo "<tr><td></td><td><a href=\"".$mappe.$val."\">".$val."</a></td><td>".$size."</td><td>".$created."</td><td>".$modified."</td><tr>";
}
Avatar billede viciodk Praktikant
23. november 2004 - 19:56 #1
Avatar billede bojo Nybegynder
23. november 2004 - 20:00 #2
måske du kan bruge noget herfra:

<?

$bytes = 0;

tree( "./", "jpg", 3, "|" );

$kb = $bytes / 1024;
$mb = $kb / 1024;
$gb = $mb / 1024;

function getmimetype( $filename ) {
    static $mimes = array ( '\.jpg$|\.jpeg$' => 'image/jpeg', '\.gif$' => 'image/gif',
    '\.png$' => 'image/png',          '\.html$|\.html$' => 'text/html',
    '\.txt$|\.asc$' => 'text/plain',  '\.xml$|\.xsl$' => 'application/xml',
    '\.pdf$' => 'application/pdf' );

    foreach( $mimes as $regex => $mime ) {
        if( eregi( $regex, $filename ) )return $mime;
    }

    // return 'application/octet-stream';
    return 'text/plain';
}

function tree( $path, $type, $indentno, $line = "", $indent = "" ) {
    global $bytes;

    for( $x = 1; $x <= $indentno; $x++ ) {
        $indent .= "&nbsp;";
    }

    $d = dir( $path );

    while( false !== ( $entry = $d->read()) ) {
        $etdir = is_dir( $path . $entry );

        if( $entry != "." && $entry != ".." && $entry != "" ) {
            $path_parts = pathinfo( $entry );

            if( $etdir || strstr( $type, $path_parts["extension"] ) || $type == "*" ) {
                $bytes += filesize( $path . $entry );
                echo "$indent<a type='" . getmimetype( $path . $entry ). "' href='" . $path . $entry . "'>" . ( $etdir ? "<b>" : ""). $entry . ( $etdir ? "</b>" : ""). "</a><br />\n";
            }

            if( $etdir ) {
                tree( $path . $entry . "/", $type, $indentno, $line, $indent . $line );
            }
        }
    }

    $d->close();
}
?>
Avatar billede goldeneyes Nybegynder
23. november 2004 - 20:05 #3
Den kommer med følgende fejl:
Fatal error: Call to undefined function tree() in E:\web\cms\admin\_sider.php on line 8

Er tree() en indbygget php-funktion?!?
Avatar billede bojo Nybegynder
23. november 2004 - 20:08 #4
tree er en funktion i det jeg skrev, så den kan ikke være udefineret

function tree( $path, $type, $indentno, $line = "", $indent = "" ) {
Avatar billede goldeneyes Nybegynder
23. november 2004 - 20:09 #5
Ja okay... Det kan jeg da godt se... Var lige lidt for hurtig med at tyde fejlmeddelelsen
Avatar billede goldeneyes Nybegynder
23. november 2004 - 20:14 #6
Kan dog ikke lige se hvorfor den melder fejlen.
Avatar billede bojo Nybegynder
23. november 2004 - 20:18 #7
jeg har lige gentestet den og den køre fint her, så hmmmmmm
Avatar billede goldeneyes Nybegynder
23. november 2004 - 20:24 #8
Nu fik jeg det også til at virker, men den er jo ikke meget anderledes end min egen.

Jeg mangler en funktion hvor jeg kan bladre i alle mapper. -> Gå frem og tilbage mellem mapperne.
Avatar billede bojo Nybegynder
23. november 2004 - 20:32 #9
ahhh - sorry jeg læste dit spg, forkert. ( det er jeg go til :-) )
Avatar billede bojo Nybegynder
23. november 2004 - 21:03 #10
rettet lidt, absolut ikke køn, men ideen er der ( vist )


<?

if( $_GET['folder'] == "" )
  $folder = "./";
else
  $folder = $_GET['folder'];

chdir( $folder );

tree( "./", "*", 3 );

function tree( $path, $type, $indentno, $indent="" ) {
    for( $x=1;$x<=$indentno;$x++) {
        $indent.="&nbsp;";
    }
    $d = dir($path);
    while (false !== ($entry = $d->read())) {
        $etdir = is_dir($path.$entry);
        if(  $entry != "." && $entry != "" ) {
            $path_parts = pathinfo($entry);
            if( strstr($type, $path_parts["extension"]) || $type=="*" ) {
              echo ($etdir?"<b>":"").$indent.$entry.($etdir?"</b>":"")."<br />\n";
          }
          if( $etdir ) {
                $sti=$path.$entry."/";
                echo "<a href=" . $_SERVER['PHP_SELF'] . "?folder=$sti>$sti</a><br />";
            }
        }
    }
    $d->close();
}
?>
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