Avatar billede hurra Novice
28. april 2005 - 13:30 Der er 2 kommentarer

automatisk menu ud fra sti

Jeg skal på en side ha vidst nogle produkter frem. Der skal være en menu, hvor i man kan browser gennem de forskellige kategorier, i en "tre" struktur.

Jeg har gemt alle produkterne i en database, med en sti til hvor de findes, fx:
/kategorier/tv/fladskærme/producenter/samsumg/

Når menuen vises skal det kun være den "gren" i treet brugeren har valgt at ville se der skal være foldet ud. Som fx her på nikon hjemmesiden:
http://www.europe-nikon.com/category.aspx?countryId=11&languageId=11&catId=92

Jeg har selv lavet 3 forskellige forsøg, ingen af dem virker serligt perfket, det sidste forsøg er dog næsten tæt på, men min kode er ved svømme over af alle mulige forskellige forbehold der skal tages højde for.

Er der nogen der enten har noget jeg hurtigt kan lave noget om, eller bare nogle suverene gode råd til hvordan jeg kommer rigtigt i gang den her gang ?
Avatar billede apache999 Nybegynder
28. april 2005 - 18:16 #1
Et forslag ville være en databasestruktur, hvor samtlige objekter (andet end dem på øverste niveau) havde en reference til et "parent"-objekt".

Når du så skal folde træ-strukturen ud, tager du den et niveau ad gangen i en rekursiv funktion af en eller anden art. Sådan lidt like det her:

funktion lavUnderMenu($parentId) {

// Noget SQL, der henter objekter frem, der har dette $parentId som parent

  while($data = mysql_fetch_assoc($result)) {
   
    extract($data);
    //udskriv menupunktet

    if($selected_id2 == $menu_id) lavUnderMenu($menu_id);
 
  }

}

//Noget SQL, der henter det øverste menulag frem

while($data = mysql_fetch_assoc($result)) {

  extract($data);
  //udskriv menupunktet
  if($selected_id1 == $menu_id) lavUnderMenu($menu_id);

}

De hersens selectedIder skal så enten inkluderes i URLen for hvert eneste objekt, eller også skal der først køres noget SQL, der finder frem til parentID hele vejen op ud fra det valgte objekts ID.

Det er sådan lidt bredt formuleret, men jeg håber, du kan bruge det. Løsningen skulle i øvrigt virke på X antal niveauer i træstrukturen.
Avatar billede apache999 Nybegynder
28. april 2005 - 18:30 #2
Nu hvor jeg lige kigger på det igen, så burde de dersens parentIder jo kunne skaffes ud fra stien til det valgte produkt, hvis vi i øvrigt går ud fra, at der er en eller anden sammenhæng mellem stiens navn & overkategoriens navn. Så stien med alle "/" tegnene skal explodes på '/', og de forskellige niveauer af parentIder skaffes ud fra det array, der kommer ud af det.
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