Avatar billede Fiber Bjørn Juniormester
13. oktober 2009 - 12:41 Der er 7 kommentarer og
1 løsning

Rækkefølge på visning af filer i mappen

Hvorfor er visnings rækkefølgen som den er???
Og hvordan kan den laves om, f.eks så filerne bliver listet efter fil navn ???

    <?php
if (isset($_GET['deleteFile'])) {
    if (file_exists('../../doc/'.$_GET['deleteFile'])) {
        unlink('../../doc/'.$_GET['deleteFile']);
    }
}
echo '<ul>';
$handle = opendir('../../doc/');
while (false !== ($file = readdir($handle))) {
    if ($file != '.' && $file != '..') {
        echo '[<a href="?deleteFile='.$file.'" onclick="return(erdusikker())">Slet</a>] <a href="../../doc/'.$file.'" target="_self">'.$file.'</a><br />';
    }
}
closedir($handle);
echo '</ul>';
?>
Avatar billede zips Juniormester
13. oktober 2009 - 13:06 #1
Da du kun henter dem og ikke sortere dem inde de vises, vil mene du skal bruge dette for at få dem sorteret http://php.net/manual/en/function.sort.php
Avatar billede showsource Seniormester
13. oktober 2009 - 13:13 #2
Som zips er inde på, skal navne i et array inden du viser dem.

Derudover bør du som minimum bruge basename($_GET['deleteFile']), og ikke bare $_GET['deleteFile']

Og is_file() tjekker om det er en fil.
file_exists() returnerer også sand for et dir.
Avatar billede majbom Novice
13. oktober 2009 - 13:13 #3
smid filerne i et array og kør derefter en natsort på arrayet og skriv arrayet ud

http://www.php.net/manual/en/function.natsort.php
Avatar billede Fiber Bjørn Juniormester
13. oktober 2009 - 13:46 #4
ja det er så der min opfindsomhed til at stykke disse ting sammen ikke rækker.
Jeg er ikke så hård til det her endnu, men det kommer stille og rolig.
Er der en der kan give et eksempel. Kan sagtens være fra noget der er brugt et andet sted, også laver jeg det om til mit.
Avatar billede showsource Seniormester
13. oktober 2009 - 14:13 #5
Havde engang et spm. om noget af det samme, hvor brugeren detox hjalp mig.

<?php

function visFiler($dir) {

$out = array();

    $d = dir($dir);
    while (false !== ($file = $d->read())) {
        if (is_file($dir."/".$file)) {
            $out[] = $file;
        }     
    }

    $d->close();

return $out;

}

$path = "fildir";
$filer = visFiler($path);
$antal count($filer);

if($antal > 0) {

sort($filer);

echo"Filer:";

    for ($i = 0; $i < $antal; $i++) {
    echo"<br />".$filer[$i];
    }

}

Utestet her! :O)
Avatar billede showsource Seniormester
13. oktober 2009 - 14:14 #6
Det var iøvrigt i dette spm. detox hjalp mig:
www.eksperten.dk/spm/599757
Avatar billede Fiber Bjørn Juniormester
13. oktober 2009 - 17:33 #7
Så fik jeg det til at virke og endda med en lille slette funktion som jeg have et andet sted fra :)

Læg et svar showsource og 1000 tak for koden.

Her er min udgave af vis file efter fil navn:
<?
if (isset($_GET['deleteFile'])) {
    if (file_exists('../../doc/'.basename($_GET['deleteFile']))) {
        unlink('../../doc/'.basename($_GET['deleteFile']));
    }
}

$mappe = "../../doc/";
$liste = array($mappe);
visMapper($mappe, $liste);
sort($liste);
foreach ($liste as $sti) {
  //  echo "<p><b>$sti:</b></p>";
    $filer = visFiler($sti);
    if (is_array($filer)) {
        sort($filer);
        echo "<p>";
        foreach ($filer as $fil) {
            echo '[<a href="?deleteFile='.$fil.'" onclick="return(erdusikker())">Slet</a>] <a href="../../doc/'.$fil.'" target="_self">'.$fil.'</a><br />';
        }
        echo "</p>";
    }
}

function visFiler($dir) {
    $d = dir($dir);
    while (false !== ($file = $d->read())) {
        if (is_file("$dir/$file")) {
            $out[] = $file;
        }     
    }
    $d->close();
    return $out;
}

function visMapper($dir, &$out) {
    $d = dir($dir);
    while (false !== ($file = $d->read())) {
        if ($file != '.' && $file != '..') {
            if (is_dir("$dir/$file")) {
                $out[] = "$dir/$file";
                visMapper("$dir/$file", $out);
            }     
        }
    }
    $d->close();
}
?>
Avatar billede showsource Seniormester
14. oktober 2009 - 09:58 #8
Ok

Bemærk, hvis der ingen filer er, vil visFiler() vise en fejl, ( NOTICE, mener jeg) hvis ikke du først definerer $out som i mit ex.
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