Kom ihåg mig?

Hämta kategorier från MySQL databas

 
Ämnesverktyg Visningsalternativ
Oläst 2010-11-03, 15:57 #1
Linuus Linuus är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2009
Inlägg: 890
Linuus Linuus är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2009
Inlägg: 890
Standard Hämta kategorier från MySQL databas

Tjena

Jag har en tabell som innehåller kategorier. Kolumnerna är
id, name, parent_id

De som har parent_id = 0 är ju då sektioner kan man säga som i sin tur har kategorier i sig.

Nu vill jag hämta alla kategorier och skriva ut dom till min meny (superfish) som ska ha följande struktur:
Kod:
<ul>
    <li>Cat1</li>
    <ul>
        <li>Subcat11</li>
        <li>Subcat12</li>
    </ul>

    <li>Cat2</>
     <ul>
        <li>Subcat21</>
        <li>Subcat22</>
     </ul>
</ul>
Men jag lyckas inte få till det.

Tips på hur jag kan göra min SQL-query för att få ett bra svar som är lätt att skriva ut med t.ex. två st foreach. En för grundkategorier och en för underkategorier.

Någon som har tips?
Linuus är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-03, 16:22 #2
abergmans avatar
abergman abergman är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2010
Inlägg: 762
abergman abergman är inte uppkopplad
Mycket flitig postare
abergmans avatar
 
Reg.datum: Feb 2010
Inlägg: 762
Select * from kategorier where parent = 0

Sedan gör du en foreach ($row as $menuitem) där du först skriver ut parent och sedan kör en select * from kategorier where parent = $menuitem['parent'] och skriver ut dessa...

Hoppas du fattade, är lite seg i skallen.
abergman är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-03, 16:24 #3
Linuus Linuus är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2009
Inlägg: 890
Linuus Linuus är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2009
Inlägg: 890
Tackar.

Tänkte dock om man kunde löst det med en query, men det kanske inte är möjligt? Så man får en array med arrayer så att säga

Annars får jag köra som du säger.
Linuus är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-03, 18:23 #4
rhdf rhdf är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2006
Inlägg: 359
rhdf rhdf är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2006
Inlägg: 359
Jo det går att köra EN query, du får helt enkelt joina tabellen med sig själv så att du får ut resultaten nånting i den här stilen
ParentId |ParentKategoriNamn| KategoriId |KategoriNamn

Sen när du loopar ut allt så kollar du om ParentId ändrats, om så är fallet så skriver du ut ParentName och börjar en ny undermeny..
rhdf är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-03, 21:32 #5
William William är inte uppkopplad
Medlem
 
Reg.datum: Oct 2010
Inlägg: 102
William William är inte uppkopplad
Medlem
 
Reg.datum: Oct 2010
Inlägg: 102
Citat:
Ursprungligen postat av Linuus Visa inlägg
Tackar.

Tänkte dock om man kunde löst det med en query, men det kanske inte är möjligt? Så man får en array med arrayer så att säga

Annars får jag köra som du säger.
Det blir nog lättast att göra som abergman skrev, enligt mig i alla fall.
William är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-03, 21:55 #6
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Här är en bra artikel om hierarkiska datastrukturer i MySQL (och andra SQL-databaser för den delen):
http://dev.mysql.com/tech-resources/...ical-data.html

Artikeln har flera olika förslag på tabellupplägg och frågor.
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-04, 01:35 #7
rhdf rhdf är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2006
Inlägg: 359
rhdf rhdf är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2006
Inlägg: 359
Citat:
Ursprungligen postat av William Visa inlägg
Det blir nog lättast att göra som abergman skrev, enligt mig i alla fall.
Ja om man tycker om att hamra databasen med queries

vad är mest resurs-snålt?
a) Köra 1 +X querys mot databasen, där X är antalet huvudkategorier
b) köra 1 query och låta koden hantera sorterandet
rhdf är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-04, 08:54 #8
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Det blir ungefär samma antal frågor ändå med alla joins. Bättre att databasen får jobba än att du ska dra logiken i php, definitivt mer resurskrävande.

Vill du spara databaskraft ska du cacha databasuppslaget, då blir det inga frågor alls.
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-04, 09:04 #9
abergmans avatar
abergman abergman är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2010
Inlägg: 762
abergman abergman är inte uppkopplad
Mycket flitig postare
abergmans avatar
 
Reg.datum: Feb 2010
Inlägg: 762
Citat:
Ursprungligen postat av Magnus_A Visa inlägg
Det blir ungefär samma antal frågor ändå med alla joins. Bättre att databasen får jobba än att du ska dra logiken i php, definitivt mer resurskrävande.

Vill du spara databaskraft ska du cacha databasuppslaget, då blir det inga frågor alls.
Håller med dig där, databasmotorn jobbar fan så mycket snabbare än php.
abergman är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-04, 12:11 #10
Jake.Nu Jake.Nu är inte uppkopplad
Medlem
 
Reg.datum: Oct 2006
Inlägg: 224
Jake.Nu Jake.Nu är inte uppkopplad
Medlem
 
Reg.datum: Oct 2006
Inlägg: 224
Det behövs ingen direkt logik eller fler än en databasfråga.
En simpel rekursiv funktion som skriver ut menyn som är lagrad i en array.
Jake.Nu är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 
Ämnesverktyg
Visningsalternativ

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 13:08.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017