Avatar billede freekyzone Nybegynder
22. maj 2005 - 18:19 Der er 10 kommentarer og
1 løsning

Sortering af mapper og filer

Jeg skal have sorteret outputtet fra dette script.

Det udskriver indholdet af en mappe, hvorefter man kan klikke sig frem og tilbage mellem file rog mapper.

Problemet er bare at det vist bliver sorteret automatisk efter dato.

<?
if (!isset($dir)) $dir = "./filer";
echo "<img src=\"../img/filtyper/mappe.gif\">&nbsp;$dir";
echo "<hr>";
$handle = opendir($dir);
while (false !== ($file = readdir($handle))) {
    if ($file != "." && $file != "..") {
        if (is_dir($dir."/".$file)) {

$ico = "mappe.gif";
            echo "<img src=\"../img/filtyper/$ico\">&nbsp;<a href=\"?dir=$dir/$file\">$file</a><br>";
        } else {

$type = strtolower(substr($file,-3));
$ico = ''.$type.'.gif';
            echo "<img src=\"../img/filtyper/$ico\">&nbsp;<a href=\"$dir/$file\">$file</a><br>";
        }
    }
}
closedir($handle);
?>

Hvordan får jeg dette sorteret med mapper først og derefter filer, og både mapper og filer i alfabetisk rækkefølge.
Avatar billede sukos Juniormester
22. maj 2005 - 18:51 #1
Avatar billede coderdk Praktikant
22. maj 2005 - 19:53 #2
Hvad med:

<?

    if (!isset($dir)) $dir = "./filer";
    echo "<img src=\"../img/filtyper/mappe.gif\">&nbsp;$dir";
    echo "<hr>";
    $handle = opendir($dir);
    $filer = array();
    $mapper = array();
    while (false !== ($file = readdir($handle)))
    {
        if ($file != "." && $file != "..")
        {
            if (is_dir($dir."/".$file))
            {
                $mapper[] = $dir . '/' . $file;
            }
            else
            {
                $filer[] = $dir . '/' . $file;
            }
        }
    }
    closedir($handle);
   
    natsort( $mapper );
    natsort( $filer );
   
    foreach ( $mapper as $mappe )
    {
        echo "<img src=\"../img/filtyper/mappe.gif\">&nbsp;<a href=\"?dir=$mappe\">$mappe</a><br>";
    }
   
    foreach ( $filer as $fil )
    {
        $type = strtolower(substr($fil,-3));
        $ico = ''.$type.'.gif';
        echo "<img src=\"../img/filtyper/$ico\">&nbsp;<a href=\"$fil\">$fil</a><br>";
    }

?>
Avatar billede coderdk Praktikant
22. maj 2005 - 19:54 #3
Evt. lav en basename($fil) og basename($mappe) når du skriver dem ud ;)
Avatar billede freekyzone Nybegynder
24. maj 2005 - 19:05 #4
Jo den er rigtig fin...

./filer/for05A2.xls
./filer/linprog.pdf
./filer/linprog.xls

Men hvordan vil du lave sådan at det kun er $file der bliver vist som navn og ikke $mappe som referer til hele stien.

Det er jo kun mappenavnet/filnavnet som skal vises...
Avatar billede coderdk Praktikant
24. maj 2005 - 19:34 #5
Det var det jeg mente med min sidste besked:

echo "<img src=\"../img/filtyper/$ico\">&nbsp;<a href=\"$fil\">" . basename($fil) . "</a><br>";
Avatar billede freekyzone Nybegynder
24. maj 2005 - 19:40 #6
Nu er den næsten perfekt - det er bare dejligt.
En sidste ting inden mine point falder ud :-)

Den lister først filer med store bogstaver og derefter med små.

Altså ex:

Abcderf
Bcdefghijk
Cqsderf
abcdefg
bghtkkt

Først alfabetisk med store, derefter alfabetisk med små...
Avatar billede freekyzone Nybegynder
24. maj 2005 - 19:49 #7
10000000000000 tak !!!!!!!!!!!!!

Det var bare en skøn hjælp.... pyh endelig fik jeg det færdig

:-)
Avatar billede coderdk Praktikant
24. maj 2005 - 19:53 #8
Ah, ja, lav natsort() om til natcasesort()
Avatar billede freekyzone Nybegynder
24. maj 2005 - 19:53 #9
Men vil gerne hvis du lige kan hjælpe med en 100 korrekt sortering alfabetisk...
Avatar billede coderdk Praktikant
24. maj 2005 - 19:56 #10
Uhm, hvad er ukorrekt ved den nu? Hvis du ændrer:

    natsort( $mapper );
    natsort( $filer );

til:

    natcasesort( $mapper );
    natcasesort( $filer );

Så burde det se rigtigt ud...
Avatar billede freekyzone Nybegynder
24. maj 2005 - 20:11 #11
Tusind tak :-)

Helt perfekt :-)
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