Det finns ingen anledning att ha två tabeller som ska lagra samma sorts information.
Lagra allt i en tabell, och skapa en tabell där du knyter ihop kategorier. Då kan du ha hur många nivåer som helst.
6 svar · 430 visningar · startad av phred
Hejsan sitter och spånar på att göra en FAQ med trädstruktur, men jag behöver en liten spark i baken för att hjärnan ska komma på rätt spår.
Har en MySQL-databas som ser ut såhär just nu.
tbl_headCat
hCatId INT autoinc
hCatname varchar
hCatDesc varchar
tbl_subCat
sCatId INT autoinc
sCatName varchar
sCatdesc varchar
sParentId INT
Jag vill ju att huvudkategorierna ska listas (inga problem) när jag klickar på en huvudkategori så ska det öppnas underkategorier (om det finns några), sen är ju utopin att man ska kunna peta in flera underkategorier i underkategorierna.
Jag känner mig inte bekväm med min hjärnverksamhet just nu.
Hoppas någon kan sparka mig i rätt rikning.
Mvh
Det finns ingen anledning att ha två tabeller som ska lagra samma sorts information.
Lagra allt i en tabell, och skapa en tabell där du knyter ihop kategorier. Då kan du ha hur många nivåer som helst.
Använda bara en enda tabell för kategorierna. Huvudkategorierna kan utmärkas genom att sätta ParentID till 0 eller null eller liknande.
EDIT: @nders hann före...
/Mirandir
Såklart, jag tänkte rätt med underkategorierna, men såklart så behövs det ju bara en tabell för det.
@nders skrev:
och skapa en tabell där du knyter ihop kategorier. Då kan du ha hur många nivåer som helst.
Ok "you lost me with hello".
tbl_categories
catID
CatName
catDesc
parentID
tbl_tabellensomknyterihop
?
?
?
Det där skulle jag behöva försöka förstå lite närmare, läsa om vad ? Titta på vad ? Tips och trix.
Mvh
Ta bort parentID ur kategoritabellen.
I knytningstabellen har du två fält; parentID, subcatID.
Det passar bra att dessa två fält tillsammans utgör nyckel i tabellen.
Tjena
Tänkte att jag skulle försöka hjälpa till lite, men har fastnat själv.
Såhär har jag gjort:
[i]categories_table[/i]
cat_id (int, auto_incr.)
cat_name (varchar)
cat_desc (text)
[i]connection_table[/i]
main_id (int)
sub_id (int)
Min Sql-fråga:
sSql = "SELECT " &_
"t1.main_id, t1.sub_id, " &_
"t2.cat_id, t2.cat_name " &_
"FROM connection_table t1 INNER JOIN categories_table t2 " &_
"ON t1.main_id = t2.cat_id " &_
"ORDER BY t1.main_id ASC"
Sen aspkoden:
Set rs = oConn.Execute(sSql)
If Not rs.EOF Then
main_id = 0
While Not rs.EOF
If main_id <> rs("main_id") Then
Response.Write(rs("cat_name") & "<br />")
End If
Response.Write(rs("cat_name") & "<br />")
main_id = rs("main_id")
rs.MoveNext
Wend
Else
Response.Write("...")
End If
rs.Close : Set rs = Nothing
oConn.Close : Set oConn = Nothing
Men det blir inte riktigt rätt resultat:
Kat 1
Kat 1
Kat 1
Kat 1
Sub 1-1
Sub 1-1
Något saknas, men vad?