Avatar billede Syska Mester
19. juli 2004 - 00:59 Der er 5 kommentarer og
2 løsninger

Kategorier/Sub-Kategorier som gammes i en database

Hej,
Min hjerne er ved at være helt smadret på hvordan man man samme sætte en system til at holde styr på kategorier og sub-kategorier, det skal kun gå ned til 9999 sub menuer, for at vise at man kan lave det og der ikke er nogen bebrænsning på det...

Hvad jeg er kommet frem til må der jo skulle være noget i databasen ala det her:
id|navn|parent|level|

Men hvordan fanden skal det så hentes ud, skal slet ikke få noget til at virke, kun hvor der er 1 enkelt sub-kategori, men så står jeg af, medmindre man kan kalde den samme fucktion fra samme fucktion, men det er en alt for langt ude ide, der må være en smart måde at gøre det på....

Håber der ligger et par gode svar til når jeg står op i morgen :-P

// Snakkkes
Avatar billede sone Nybegynder
19. juli 2004 - 08:07 #1
Som din opstilling er i dag, skal du lave et SQL-kald for hver niveau du vil hente ud:
SELECT * FROM kategori_tabel WHERE parent=x

Hvis du vil kunne hente alle undersider og under-undersider ud, skal du have et felt mere - topid - som for alle rækker indeholder ID på den kategory som er topkategorier for denne under-kategori:
SELECT * FROM kategori_tabel WHERE topid=x
Avatar billede Syska Mester
19. juli 2004 - 12:50 #2
Min hjerne er stadig smadret, kan du komme med et simpelt eksempel til det, så ville jeg være en meget glad mand.
Avatar billede sone Nybegynder
19. juli 2004 - 13:50 #3
Hvordan ser din SQL ud i dag?
Avatar billede Syska Mester
19. juli 2004 - 15:14 #4
Det er noget frykteligt rod, som jeg faktisk ingen gang kan finde rundt i selv længere......
Det blev lavet på en helt anden måde, men virkede kun med 1 underside, men jeg troede det virkede med flere, men det gjorde det ikke.....

Jeg kan ikke helt regne ud hvordan det skal se ud, men hvis du bare kan lave noget pseudo kode at det ville det hjælpe mig meget.....

For som jeg ser det nu kræver det jo et SQL for hvert niveau som du selv skriver, hvis man ikke har topid med i sin database.....

Men bare hvordan det ca. skal laves med hvad for nogle kald til while/for/if ting etc. så er der nok en chance for at der går et lyn op for mig ligepludselig.....

// ouT
Avatar billede Syska Mester
19. juli 2004 - 19:35 #5
Der kan selvf godt komme flere point til hvis det hjælper, er ved at flippe ud over jeg ikke lige kan regne ud hvordan det skal lave....

150 point mere, just say, I got the points
Avatar billede sone Nybegynder
20. juli 2004 - 08:14 #6
OK, her kommer en gan pseudo...

presentLevel(0);

function presentLevel(parentID, level=0) {
  SELECT * from kat WHERE parent=parentid
  for hver række i resultat:
  {
    //præsenter/udskriv hver række - hvis du skal lave indryk mv. så har du level til hjælp
    new_parent = (parent fra rækken);
    presentLevel(new_parent, level+1)
  }
}
Avatar billede Syska Mester
23. juli 2004 - 17:56 #7
hmm, det ser jo meget nemt ud, det vil jeg lige prøve, jeg var bare i tvivl om man kunne kalde funktionen fra sig selv, men det kan jeg så forstå at man godt kan, prøver lige at gejle noget sammen
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