Avatar billede anderseiler Nybegynder
03. januar 2010 - 14:34 Der er 2 kommentarer og
1 løsning

Rekrussiv funktion til dannelse af array

Jeg har min menu gemt i databasen med følgende felter:

id, name, parent

Ved de "øverste" menu-punkter er parent tom. Ved under-punkter er parent = id på dens "ejer".

Jeg har forsøgt mig med noget lignende:

function getChildrin($parent, &$array = array()) {
    $query = $db->query("SELECT id, name, parent FROM menu WHERE parent='" . $parent . "' ORDER BY name");
    while($obj = $query->fetch_object()) {               
               
        //array dannes her
               
        getChildrin($obj->id, $array);
    }
           
    return $array;
}
       
$menu = getChildrin('');


Så henter den først den første uden nogen parent - så henter den alle dens children osv. osv.. Jeg ved bare ikke, hvordan jeg bygger mit array.

Jeg forstiller mig et multidimensionelt array lignende:

array (
    [1] => array (
        [2] => 'undermenu 1'
        [3] => array(
            [4] => 'endnu et underpunkt'
        )
    )
)

men det er bare en idé jeg har. Gode idéer til hvordan det kan opbygges er meget velkomme.
Avatar billede anderseiler Nybegynder
03. januar 2010 - 16:42 #1
problem solved
Avatar billede Slettet bruger
03. januar 2010 - 16:58 #2
Medmindre din menu er koloenorm og du henter den i "bidder" vha. ajax...?
- så er dén måde at hente menuen frem (til alle sider) meget ineffektiv.
Mange, mange SQL-operationer for hver eneste sidevisning!

Du sku' i stedet beregne den samlede menu (med din snedige array-kode) én gang for alle (eller hver gang den ændrer sig)
- og derefter blot hente den i eet hug (som én klump HTML eller javascript)


det var bare det jeg ville sige, hej : )
Avatar billede repox Seniormester
03. januar 2010 - 19:15 #3
Det kunne være rart at se hvilken løsning du kom frem til?
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