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!