Avatar billede mysli Nybegynder
08. juni 2005 - 19:49 Der er 3 kommentarer og
1 løsning

Funktion går i spåner.

function createsubNavigation($id = NULL, $count = 1){
       
        $antal = $this->db->getRows("SELECT id FROM khs_navigation WHERE id = '$id'");
        if ($antal != 0){
       
        $issub = $this->db->getArray("SELECT parent FROM khs_navigation WHERE id = '$id'");       
        if ($issub['parent'] != 0){
            $id = $issub['parent'];
            }           
        $subnavigation[$count] .= "\n<table class='subNavigation' style='left-pdaaing: 5px;'>";
           
            $antal = $this->db->getRows("SELECT id FROM khs_navigation WHERE parent = '$id'");
           
            for($x = 0; $x < $antal; $x++){
                $navigation = $this->db->getArray("SELECT id, name FROM khs_navigation WHERE parent = '$id' LIMIT $x,1");
               
                $subnavigation[$count] .= "<tr>";
                $subnavigation[$count] .= "<td>";
                $subnavigation[$count] .= "<span class='N2'>";
               
                $subnavigation[$count] .= "<a href='index.php?id=".$navigation['id']."' title='".$navigation['name']."'>";
               
                if ($_GET['id'] == $navigation['id']){
                    $subnavigation[$count] .= "<span class='N2_aktiv'>";
                    $subnavigation[$count] .= $navigation['name'];
                    $subnavigation[$count] .= "</span>";
                } else {
                    $subnavigation[$count] .= $navigation['name'];
                }
                $subnavigation[$count] .= "</a>";
               
                $subnavigation[$count] .= "</span>";
                if ($_GET['id'] == $navigation['id'] || $this->getParent($_GET['id'], "khs_navigation") == $navigation['id']){   
                $subnavigation[$count] =    $this->createsubNavigation($navigation['id'], $count++);
                }
                $subnavigation[$count] .= "\n</td>";
                $subnavigation[$count] .= "\n</tr>";
            }
        $subnavigation[$count] .= "\n</table>";
       
           
        return $subnavigation[$count];
       
    }
    return false;
}

Når jeg kører denne funktion - og $id ikke er det samme som $navigation['id'] virker det fint. Men når jeg prøver at få endnu en subnavigation(), ved at klikke på et link der er en subnavigation, bliver det ved med at loade til timeout.

Tænkte det kunne være fordi $subnavigation så blev "renset" - derfor har den fået [$count] efter sig, men det hjalp ikke.
Avatar billede nielle Nybegynder
08. juni 2005 - 20:02 #1
Hvis $_GET['id'] == $navigation['id'] så bliver denne her:

if ($_GET['id'] == $navigation['id'] || $this->getParent($_GET['id'], "khs_navigation") == $navigation['id'])
    $subnavigation[$count] = $this->createsubNavigation($navigation['id'], $count++);

- jo bare ved med at gå i ring.

Du bliver nødt til at indsætte noget logik som stopper dette loop på et eller andet tidspunkt.
Avatar billede nielle Nybegynder
08. juni 2005 - 20:43 #2
Grunden til at den går i ring er denne:

1) Du starter med et bestemt id.
2) Du finder parent til dette id.
3) Du finder samtlige id som har denne parent - denne liste inkludere dit oprindelige id.
4) Du kalder createsubNavigation med samtlige de fundene id’er - deriblandt altså også det oprindelige id.

Det sidste indebære at du kalder createsubNavigation på nøjagtig samme måde som til at starte med. Der er altså ikke noget som ændres undervejs, og derfor går det hele bare i en uendelig loop.
Avatar billede mysli Nybegynder
08. juni 2005 - 21:55 #3
Du har ret, tog mig lige lidt tid at finde ud af.

Nu sidder og bare og prøver at lave en funktion, så det hele går op i en højere enhed.

Skulle gerne kunne have uendeligt med undermenuer.

Smid et svar.
Avatar billede nielle Nybegynder
08. juni 2005 - 22:09 #4
Svar :^)
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