Har tänkt att lägga upp en struktur för en länksamling som är tänkt att expandera kraftigt. Därför har jag beslutat att dela in länkarna i kategorier samt i underkategorier.
Och då till frågan: Ska jag göra själva kategoriseringen i databasen, eller i en fil för sig? För-/nackdelar?
Men hur ska jag göra med underkategorier? Det är inga problem i ett steg, exempelvis "Hej > Hopp", men ska man gå ner ytterligare ett steg blir det problem "Hej > Hopp > Hej då". Hur ska man genomföra det?
subcategory
-----------
subcategoryid
categoryid -- kan vara null
link
----
id
url
description
categoryid
Sen skan man använda unions och lite selfjoin för att få fram det man vill.
Alternativt kan man först traversera kategoriträdet och få fram en lista på möjliga id eller så kan du läsa upp hela den strukturen en gång och lagra i application. Det blir förmodligen inte så mycket data.
Okej, men om jag ska lagra en länk i "category" tabellen, vilket ID ska jag då ange i "link" tabellen? För samma ID kan ju både förekomma i "category" och "subcategorys"?!
Tänkte du lägga ut alla kategorier i en dropdown och sedan skicka en lista av valda kategorier(id) till söksidan?
Sen så vill du ha en funktion som givet ett kategoriid returnerar id för alla överliggande kategorier eller?
Vill du kunna hantera ett godtyckligt djup i trädet?
Kommer du att lägga till nya kategorier väldigt ofta?
Det jag funderar på är om det är effektivast att lägga alla kategorier i en array (där index motsvarar id) och som innehåller parentkategori. Då är det lätt att loopa igenom den för varje id tills man kommer till en rootkategori. Den arrayen kan du spara i en application-variabel.
Tänkte du lägga ut alla kategorier i en dropdown och sedan skicka en lista av valda kategorier(id) till söksidan?
Nej.
Sen så vill du ha en funktion som givet ett kategoriid returnerar id för alla överliggande kategorier eller?
Japp.
Vill du kunna hantera ett godtyckligt djup i trädet?
Eventuellt 1-2 underkategorier. Kanske mer.
Kommer du att lägga till nya kategorier väldigt ofta?
Nej.
Det jag funderar på är om det är effektivast att lägga alla kategorier i en array (där index motsvarar id) och som innehåller parentkategori. Då är det lätt att loopa igenom den för varje id tills man kommer till en rootkategori. Den arrayen kan du spara i en application-variabel.
Jag tänkte också på det, men man ska ju även kunna ha länkar i en rootkategori.
Alltså
Film
- Imdb.com
Film > Företag
- Arri.com
Eller jag kanske ska köra på att sköta "sorteringen" med ASP?
r) Och använda sig av rekursion när man visar kategorierna?!
Okej, nu har jag bestämt mig för att enbart ha 1 underkategori. Det blir enklast.
Så jag har följande tabeller:
[b]Lankar_Cat[/b]
----------
Cat_ID
Cat_Name
[b]Lankar_Subcat[/b]
-------------
Subcat_ID
Subcat_Name
RootCat_ID
[b]Lankar[/b]
------
ID
Titel
Url
Beskrivning
Kategori
Subkategori
Klick
När jag lägger till en länk så kan den antingen ligga i en rootkategori, eller en underkategori. När den ligger i rooten tänkte jag att exempelvis: Kategori = 3 och Subkategori = null,
och när den ska ligga i en underkategori så blir det
Kategori = null och Subkategori = 3
Men hur ska SQL satsen se ut? Så här långt har jag kommit:
SELECT kategori, id, titel, url, beskrivning, klick
FROM Lankar
LEFT JOIN Lankar_Cat ON Lankar.Kategori = Lankar_Cat.Cat_ID
Varför har du med både kategori och subkategori i lankar?
För att det var det enda sättet jag fick det att fungera. Men det är bl.a. det jag behöver ha hjälp med!
Varför har du med subcat_namn i Lankar_subcat?
Det är ju underkategoriernas namn. Eller hur menar du?
Varför blandar du svenska och englska namn? Dålig vana. Tabellen "lankar" gjorde jag för några månader sedan, och de andra nyligen.
Jag fick i alla fall detta felet på den SQL du gav mig ovan (MySQL):
You have an error in your SQL syntax near 'INNER JOIN Lankar_Cat ON Lankar.Kategori = Lankar_Cat.Cat_IDWHERE Lankar.Kategor' at line 1
Jag tänkte att du skulle ha med alla kategorier, även subkategorier, i lankar_cat. (Det skulle underlätta om du senare vill lägga till subsubkategorier.)
Av felet att döma så saknar du en blank framför where någonstans i din sql-sats.
Du vet väl att du behöver mysql 4.0 för att union skall fungera.
387 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a