Avatar billede jammerlab Nybegynder
01. april 2011 - 19:33 Der er 9 kommentarer og
1 løsning

Mappe struktur - filer

Hej derude.

Jeg er i gang med at prøve at lave en mappe struktur hvor filer ligger i. Mit udtræk af filer fra databasen indikerer kun hvilken mappe de måtte ligge i. Mit problem er nu at jeg ikke rigtigt kan se hvordan jeg skal lave en struktur. Jeg skal lave en konsol hvor man ligesom i linux kan bevæge sig ind i mappen med "cd mappe" og tilbage "cd .."

så på en eller anden måde skal jeg kunne bevæge mig frem og tilbage i mapperne og liste filerne som måtte være i dem. Nogen idé til hvordan man kan lave det?
Avatar billede kjeldsted Novice
01. april 2011 - 21:07 #1
Med nedenstående kode kan du liste alle elementer i en given mappe på serveren (inkl. '.' (mappen du er i) og '..' mappen et trin oppe). Du kan jo så omskrive en smule således at du kan lave det om til links, hvor brugeren enten kan åbne en given fil / mappe eller gå et trin tilbage ('cd') ved at klikke på '..'.


<?
function cmp($a, $b)
{
    if($a == $b) return 0;
    return (strtolower($a) < strtolower($b)) ? -1 : 1;
}

$dir = './mappe'; //Mappe der skal vises
if ($handle = opendir($dir)) {
    $i = 0;
    while (false !== ($file = readdir($handle)))
    {
        $files[] = $file;
        $i++;
    }
    uasort($files,"cmp");
    foreach($files as $s_files)
    {       
        echo $s_files."<br>";

    }

    closedir($handle);
}
?>
Avatar billede jammerlab Nybegynder
01. april 2011 - 21:47 #2
Ja men sådan en form for kode kender jeg... jeg har før arbejdet mig igennem fysiske mapper... men her forstiller jeg mig et array som repræsenterer en mappe struktur med et vist antal filer i hver... og der skal man så kunne lave trækket at bevæge sig igennem flere mapper og tilbage... men kun en frem og en tilbage hvis du forstår "cd mappe" "cd .."
Avatar billede kjeldsted Novice
01. april 2011 - 21:54 #3
Så vi snakker altså en form for en virtuel mappe struktur i et array?
Avatar billede jammerlab Nybegynder
01. april 2011 - 21:58 #4
Netop... og det er her jeg taber tråden lidt :)
Avatar billede kjeldsted Novice
01. april 2011 - 23:48 #5
Hm. Det må vel være noget med at gemme hvert lag i array'et med et decimal eller hexadecimal tal, sådan at fx. hvis du er i den 3. mappe i den anden mappe vil det være nogenlunde sådan:

- Mappe 1
    - Mappe 1:2
    - fil 1:1
- Mappe 2
    - fil 2:2
    - fil 2:3
    - Mappe 2:1
        - Mappe 2:1:1
- Mappe 3
    - Mappe 3:1
    - Mappe 3:2
        - fil 3:2:1
        (* Du er hér)

Så på en måde få gemt at du er i 0302. Altså den 3. mappe i roden og den anden mappe i den tredje mappe.

Kræver dog at det højeste antal mapper(/filer) i én mappe er 256.

Hvis du kan følge mig. Så vil man jo ved lidt simpel logik kunne finde den ovenlæggende mappe.

Men tænke blot højt. Kan godt være der findes nemmere metoder :)
Avatar billede kjeldsted Novice
01. april 2011 - 23:49 #6
Men kan opgaven ikke løses med "fysiske" mapper i stedet?
Avatar billede jammerlab Nybegynder
01. april 2011 - 23:53 #7
Nej den kan desværre ikke løses med rigtige mapper i dette tilfælde... det ville ikke give mening da filerne eksisterer i databasen... men ja jeg skal finde en eller anden måde som du beskrivet at holde styr på hvor jeg er og kan komme hen... din idé kunne måske godt lade sig gøre...
Avatar billede Slettet bruger
02. april 2011 - 01:49 #8
mappestrukturen som nøgle måske:

Sti                                        Navn                            Type
"mappe1"                            "monalisa.jpg"            fil
"mappe1"                            "ferie 2010"                mappe
"mappe1/ferie 2010"        "stranden.jpg"            fil
"mappe1/ferie 2010"        "baren.jpg"                fil
Avatar billede jammerlab Nybegynder
02. april 2011 - 15:10 #9
Hvis der er nogen der har nogle kode eksempler så må i meget gerne sige til hehe :)
Avatar billede jammerlab Nybegynder
24. oktober 2011 - 19:13 #10
Når jeg lukker tråden... kom aldrig rigtigt videre med den... skriv herinde hvis i vil havde point så klarer vi den...
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

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