Avatar billede hamzter Nybegynder
09. oktober 2007 - 09:28 Der er 8 kommentarer og
1 løsning

Sortere udskrift(echo) efter kriterier

Jeg har en side som læser et givent dir igennem og lister hvilke filer der er.

if (@strtolower($ext["extension"]) == "") { // tjekker at det er en mappe

    echo"<h1><a href=\"". $dir .\"list.php?mappe=".$files ."\">".$files."</a></h1>\n";
    }
elseif (@strtolower($ext["extension"]) != "php") {
echo"<p><a href=\"". $dir . $files ."\">".$files."</a></p>\n";
    }

Dette giver to forskellige udskrifter, hvilket er som det skal være. Jeg vil dog gerne kunne sortere, så alle "mapperne" bliver linket øverst, og derefter resten af filerne.

Hvordan kan jeg gøre det?
Avatar billede zurekk Nybegynder
09. oktober 2007 - 12:36 #1
Er det ikke bare at hente alle mapperne ud først, og derefter gøre det samme bare med filer?

Du kan forresten bruge filetype() til at finde type :)

Mapper returnerer 'dir' og filer 'file' :)
Avatar billede hamzter Nybegynder
09. oktober 2007 - 12:43 #2
Uhh, det vidste jeg ikke. Så jeg kan lave en if filetype(dir) fx?

Det kunne gøre det hele en smule mere overskueligt.

Men hvordan vil du trække mappen ud først? Umiddelbart ville jeg tro at den burde gøre det, de bliver trækket ud gennem if..?
Avatar billede zurekk Nybegynder
09. oktober 2007 - 13:20 #3
Altså nu ved jeg ikke hvordan resten af din kode ser ud, kan du ikke prøve at smide den herind?

Og filetype( 'sti' ), sådan virker den.
Avatar billede hamzter Nybegynder
09. oktober 2007 - 13:26 #4
$mappe = $_GET["mappe"];
if ($mappe != "") {
$dir = "$mappe/";
}
else {
$dir = "";
}

$sti = dirname($_SERVER["DOCUMENT_ROOT"] . $_SERVER["PHP_SELF"]) ."/$mappe/";
$path = opendir($sti);

while (false !== ($files = readdir($path))) { // tjekker dir igennem

$ext = pathinfo($files); // finder filtype

if (@strtolower($ext["extension"]) == "") { // tjekker at det er en mappe

    echo"<h1><a href=\"". $dir .\"list.php?mappe=".$files ."\">".$files."</a></h1>\n";
    }
elseif (@strtolower($ext["extension"]) != "php") {
echo"<p><a href=\"". $dir . $files ."\">".$files."</a></p>\n";
    }

Jeg har lige prøvet med filetype(dir), og det virkede helt fint. Men kun i "første led". Meningen er at man oss skal kunne se hvad der er inde i mapperne. Derudover skal funktionen ikke vise php-filer.. Så tror bare jeg beholder den som den er. :)

Medmindre man kan lave en funktion der sortere på den måde..
Avatar billede zurekk Nybegynder
09. oktober 2007 - 13:53 #5
Det jeg mente var noget ala.:

$files = readdir( $path );
while ( $files !== false AND filetype( $files ) == 'dir' )
{
echo"<h1><a href=\"". $dir .\"list.php?mappe=".$files ."\">".$files."</a></h1>\n";
}

while ( $files !== false AND filetype( $files ) == 'file' AND getext( $files ) != 'php' )
{
echo"<h1><a href=\"". $dir .\"list.php?mappe=".$files ."\">".$files."</a></h1>\n";
}

Den er ikke testet, har ikke leget så meget med opendir/readdir, men det var noget i den stil jeg mente :)

Så skal du bare lige lave en funktion som checker ext :)
Avatar billede hamzter Nybegynder
09. oktober 2007 - 14:56 #6
Aarh, på den måde. Jeg prøver at lege lidt med det. :)
Avatar billede hamzter Nybegynder
09. oktober 2007 - 15:13 #7
Det virker ikke lige som det skal. Bliver blot ved med at poste det første mappenavn. Men prøver at lege lidt videre med det, og se om jeg kan få det til at virke.
Avatar billede hamzter Nybegynder
11. oktober 2007 - 09:07 #8
Har stadig ikke fundet en løsning. Så andre der skulle have et råd, er velkomne til at kommentere...
Avatar billede hamzter Nybegynder
08. november 2007 - 09:04 #9
lukker ;)
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