Avatar billede brandy Nybegynder
06. oktober 2003 - 16:00 Der er 9 kommentarer og
1 løsning

Menu med sektioner

Hej!
Jeg har en menu med 3 lags menu:
------------
+rod af menu
+sektion
  +sektion
  -side
  -side
-side
-side
------------
Menuen er dynamisk og ser nogenlunde sådan her ud:
<?
while ($raekke = mysql_fetch_array($resultat)){
    echo "$raekke[navn]";
    while ($raekke1 = mysql_fetch_array($resultat1)){
        echo "$raekke1[navn]";
        while ($raekke1 = mysql_fetch_array($resultat2)){
            echo "$raekke2[navn]";
            echo "-Sider til denne sektion (2)";
        }
        echo "-Sider til denne sektion (1)";
    }
    echo "-Sider til denne sektion(0)";
}
?>
Det er selvfølgelig meget mere kompleks, men sådan fungerer den teoretisk.

Det jeg ikke kan finde ud af (!!) er hvordan jeg laver en while / funktion som gør det muligt at lave "uendeligt" antal sektioner, undersektioner, under-undersektioner...osv...

Jeg kan simpelthen ikke greje det lige nu :-)
Avatar billede brandy Nybegynder
06. oktober 2003 - 16:03 #1
Jeg forestiller mig en funktion der tjekker om der findes en under-sektion og så bliver den ved til der ikke er flere... lige nu har jeg 3 while løkker, som bestemmer at det bliver en menu med 3 "lag". Men tanken var at én while med en funktion kunne gøre det hele??
Avatar billede Slettet bruger
06. oktober 2003 - 16:06 #2
Du skal lave et rekursivt metodekald. Lav en metode der chekker om sektionen har en undersektionen: hvis den ikke har tilføjer du bare sektionen i menustrukturen, hvis den har, kalder du metoden (inde fra metoden) med den nye række som parameter...
Avatar billede brandy Nybegynder
06. oktober 2003 - 16:09 #3
okay - dvs. en funktion som kan kaldes af sig selv?
Avatar billede Slettet bruger
06. oktober 2003 - 16:12 #4
Ja...
Avatar billede Slettet bruger
06. oktober 2003 - 16:13 #5
Jeg har desværre aldrig kodet PHP, så jeg kan ikke lave den for dig
Avatar billede brandy Nybegynder
06. oktober 2003 - 16:40 #6
<?
function sektion ($sektion_id){
    $resultat = mysql_query("SELECT * FROM sektioner WHERE relation = '$sektion_id'") or die (mysql_error());
    while ($raekke = mysql_fetch_array($resultat)){
        echo "$mappe_grafik <a onClick=\"DocClickHandler('$raekke[navn]');\" style='cursor: hand' class='sektion'>$raekke[navn]</a><br>";
        $resultat1 = mysql_query("SELECT * FROM sektioner WHERE relation = '$raekke[id]'") or die (mysql_error());
        if (mysql_num_rows($resultat1) >= 1){
            sektion($raekke1[relation]);
        }
        $resultat2 = mysql_query("SELECT * FROM indhold WHERE sektion = '$raekke[id]'") or die (mysql_error());
        while ($raekke2 = mysql_fetch_array($resultat2)){
            echo "$side_grafik <a href='indhold.php?vis=$raekke2[id]'>$raekke2[navn]</a><br>";
        }
    }
}
?>
<?
sektion (0);
?>

Dette er en forsimplet udgave af hvad jeg har lige nu..OG det går naturligvis galt...nogen der kan hjælpe?
Der opstår et uendeligt loop ved første under-sektion.

De sektioner med relation = 0 er dem der ligger helt ude i roden.
Avatar billede brandy Nybegynder
06. oktober 2003 - 16:42 #7
Forhøjer point...
Avatar billede brandy Nybegynder
06. oktober 2003 - 17:47 #8
Jeg fandt løsningen selv :-) skulle bare væk fra maskinen lidt...
Avatar billede Slettet bruger
07. oktober 2003 - 09:10 #9
Det hjælper ofte - man er bare tilbøjelig til at glemme det, eller for stædig til at indrømme det ....! :-)
Godt du fandt ud af det ;-)
Avatar billede brandy Nybegynder
07. oktober 2003 - 09:53 #10
Hehe..ja men ikke helt alligevel :)
http://www.eksperten.dk/spm/410708
Nyt spørgsmål...
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