Börja med att loopa igenom alla kategorier, och för varje kategori plockar du ut alla knutna forum, Forum.CatID = Category.CatID. Sen, för varje forum, plockar du ut alla forum där ForumParentID = ForumID.
Men jag förstår inte riktigt hur det ska gå till... har du nåt exempel?
Resultatet ska exempelvis bli:
Categori 1
-Forum1
-Sub Forum
-Sub sub forum
-Sub sub forum
-Sub sub sub forum
-Forum2
-Sub Forum
-Sub sub forum
-Sub sub forum
-Sub sub sub forum
Categori 2
-Forum3
-Sub Forum
-Sub sub forum
-Sub sub forum
-Sub sub sub forum
-Forum4
-Sub Forum
-Sub sub forum
-Sub sub forum
-Sub sub sub forum
Börja med att loopa igenom alla kategorier, och för varje kategori plockar du ut alla knutna forum, Forum.CatID = Category.CatID. Sen, för varje forum, plockar du ut alla forum där ForumParentID = ForumID.
Men, går det att göra i en och samma SQL-fråga? Om man måste köra en fråga per förgrening kan det ju bli ganska slött i längden.
Jag utgick från den koden o ändra lite. Jag har fått det att funka ganska bra :) Dock ett problem! Jag får inte indragen att stämma riktigt.
Någon som har en idé om hur man kan få till det?
Utskriften blir så här:
Category 1
Main Forum 1 (Category 1)
Sub Forum 1 (Main Forum 1)
Sub Sub Forum 1 (Sub Forum 1)
Sub Sub Sub Forum 1 (Sub Sub Forum 1)
Sub Sub Forum 2 (Sub Forum 1)
Category 2
Main Forum 2 (Category 2)
Sub Forum 2(Main Forum 2)
Jag vill ha det så här:
Category 1
Main Forum 1 (Category 1)
Sub Forum 1 (Main Forum 1)
Sub Sub Forum 1 (Sub Forum 1)
Sub Sub Sub Forum 1 (Sub Sub Forum 1)
Sub Sub Forum 2 (Sub Forum 1) <--------------------
Category 2
Main Forum 2 (Category 2)
Sub Forum 2(Main Forum 2)
sub check(parentID,indrag)
set rs1 = Conn.execute("SELECT ForumID, fName FROM tblForums WHERE fParentID = " & parentID & " ORDER BY fOrder ASC")
do until rs1.eof
indrag = indrag + 1
str = string(indrag, " ")
str = replace(str, " ", " ")
response.write str
response.write "" & rs1("fName") & "</a><br>"
check rs1("ForumID"), indrag
rs1.movenext
loop
end sub
set rs2 = Conn.execute("SELECT CategoryID, CatTitle FROM tblCategories ORDER BY CatOrder ASC")
arrRS = rs2.GetRows()
For i = 0 To Ubound(arrRS, 2)
Response.write "<b>" & arrRS(1,i) & "</b><br>"
set rs = Conn.execute("SELECT ForumID, fName FROM tblForums WHERE fParentID = 0 AND fCategoryID = " & arrRS(0,i) & " ORDER BY fOrder ASC")
do until rs.eof
response.write rs("fName") & "</a><br>"
check rs("ForumID"),0
rs.movenext
loop
Next
Tycker det är vettigare att använda nästlade listor istället.
sub check(parentID)
set rs1 = Conn.execute("SELECT ForumID, fName FROM tblForums WHERE fParentID = " & parentID & " ORDER BY fOrder ASC")
if rs1.RecordCount <> 0 then:
response.write "<ul>"
do until rs1.eof
response.write "<li><a href=""..."">" & Server.HTMLEncode(rs1("fName")) & "</a>"
check rs1("ForumID")
response.write "</li>"
rs1.movenext
loop
response.write "</ul>"
endif
end sub
<select> och <ul> är som du själv skriver helt skilda ting. ;) Du får använda koden du skrev ovan för en select + lite mer kod... ska se om man kan hitta en en lösning...
sub check2(parentID)
set rs1 = Conn.execute("SELECT ForumID, fName FROM tblForums WHERE fParentID = " & parentID & " ORDER BY fOrder ASC")
If Not rs.EOF Then
Do Until rs1.EOF
If parentId > 0 Then
Execute("indrag" & rs1("ForumID") & " = 1 + indrag" & parentId)
End If
str = string(eval("indrag" & parentId), " ")
str = replace(str, " ", "-")
Response.Write "<option value=""" & rs1("ForumID") & """>" & str & " " & Server.HTMLEncode(rs1("fName")) & "</option>"
check2(rs1("ForumID"))
rs1.MoveNext
Loop
End If
End Sub
(heter dock check2 så du kan behålla check-sub funktionen).
set rs2 = Conn.execute("SELECT CategoryID, CatTitle FROM tblCategories ORDER BY CatOrder ASC")
arrRS = rs2.GetRows()
Response.Write "<select name=""forum"">"
For i = 0 To Ubound(arrRS, 2)
set rs = Conn.execute("SELECT ForumID, fName FROM tblForums WHERE fParentID = 0 AND fCategoryID = " & arrRS(0,i) & " ORDER BY fOrder ASC")
do until rs.eof
check2 rs("ForumID")
rs.movenext
loop
Next
Response.Write "</select>"
Det är ju inte så svårt att läsa av koderna från samtliga som har postat i denna tråd att snickra ihop det själv dock ;)
Dock så vet jag inte riktigt hur du har tänkt att lösa det i ett längre flöde när du ska spara data. då "huvud-topic" IDt kan vara samma id som en av dina forum.
Dock så vet jag inte riktigt hur du har tänkt att lösa det i ett längre flöde när du ska spara data. då "huvud-topic" IDt kan vara samma id som en av dina forum.
tblCategorys har 3 poster med ID:
1, 2 och 3
och tblForums har 11 poster med IDn:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10 och 11.
DVS det kommer att bli en liten konflikt med tanke av 3x2 av dina totala poster av 11+3 = 14 st som har samma "value" i sin option. Du får komma på en lösning som behandla tblCategorys och tblForums vval.
Ett förslag är kanske ha för tblCategorys idn: value="cat_<nummer från tblCategory>"...
För tillfället kommer jag inte få något problem med det då kategorierna bara står som en <optgroup>
Bara forumen kommer att kunna bli valda och dom har ju unika idn!