webForumDet fria alternativet

Faq - trädstruktur

ASPur ASP

6 svar · 430 visningar · startad av phred

Medlem sedan nov. 2005314 inlägg
Frågan#1

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

Medlem sedan juni 200032 969 inlägg
#2

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.

Medlem sedan maj 2003750 inlägg
#3

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

Medlem sedan nov. 2005314 inlägg
#4

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

Medlem sedan juni 200032 969 inlägg
#5

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.

Medlem sedan feb. 20034 441 inlägg
#6

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?

Medlem sedan feb. 20034 441 inlägg
#7

Är det ingen som har nån idé om det här?
Skulle vilja få ihop min kod ovan.

Tack!

142 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)