Forumet har olika kategorier, vi kan kalla dem för Frukt, Kött och Mjölk. Till dessa olika kategorier finns trådar.
Kategorierna sparas i en databas och trådarna i en annan.
Jag vill loopa ut forumkategorierna och sedan under respektive forumkategori loopa ut de trådar som hör till respektive kategori.
Typ exempel:
Kött
- Köttråd nummer 1
- Köttråd nummer 2
Frukt
- Skala banan
- Rotfrukter
Mjölk
- Muu
- Mellanmjölk eller standardmjölk?
Jag försökte med denna koden:
<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/hhgsdb.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Visa = "SELECT * FROM Forumkategori WHERE Visa ='Ja' Order by Ordning"
RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>
<% Do Until RecSet.EOF %>
<% =RecSet("Rubrik") %>
<%
Set RecSet = Server.CreateObject("ADODB.Recordset")
Visa2 = "SELECT top 5 * FROM foruminlagg ORDER BY ForumID DESC"
RecSet.Open Visa2, Connect, adOpenStatic, adLockOptimistic %>
<% Do Until RecSet.EOF %>
<% =RecSet("Rubrik") %>
<% RecSet.Movenext
loop
%>
<% RecSet.Movenext
loop
Recset.Close
Connect.Close
Set Recset = Nothing
Set Connect = Nothing
%>
Byt namn på ditt andra recordset. Som du har nu så skriver du över ditt första recset på en gång. Inte bra
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OleDb.4.0; Data Source=" & Server.MapPath("db/hhgsdb.mdb")
Set objForum = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT Rubrik FROM Forumkategori WHERE Visa ='Ja' ORDER BY Ordning"
objForum.Open strSQL, Connect, adOpenStatic, adLockReadOnly
Do Until RecSet.EOF
Response.Write RecSet(0) & "<br>"
Set objThreads = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT TOP 5 Rubrik FROM foruminlagg ORDER BY ForumID DESC"
objThreads.Open strSQL Connect, adOpenStatic, adLockReadOnly
Do Until RecSet.EOF
Response.Write "- " & RecSet(0) & "<br>"
RecSet.Movenext
Loop
objThreads.Close
RecSet.Movenext
Loop
Set objThreads = Nothing
objForum.Close
Set objForum = Nothing
Connect.Close
Set Connect = Nothing
%>
Du måste på ett eller annat sätt spara ID´t på din kategori i tabellen för inläggen så att du via detta id kan
koppla samman inlägg med rätt kategori, något du enklast gör när du skapar kategorier och sparar nya inlägg.
Här kommer ett litet förslag: OBS Helt otestat då jag inte har Access installerat just nu!
Tabell1: Forumkategori
ID | Kategori | Visa
Tabell2: Foruminlagg
ID | Rubrik | KategoriID
Exempel på kod:
[red]<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("db/hhgsdb.mdb")
Set RecSet = Connect.Execute("SELECT k.ID, k.Kategori, COUNT(i.ID) FROM Forumkategori k, Foruminlagg i WHERE k.Visa='Ja' AND i.KategoriID=k.ID GROUP BY k.ID, k.Kategori ORDER BY 1")
If NOT RecSet.EOF Then arrKategori = RecSet.GetRows()
RecSet.Close
Set RecSet = Connect.Execute("SELECT k.ID, i.ID, i.Rubrik FROM Forumkategori k, Foruminlagg i WHERE i.KategoriID=k.ID GROUP BY k.ID, i.ID, i.Rubrik ORDER BY 1")
If NOT RecSet.EOF Then arrInlagg = RecSet.GetRows()
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
'//---------------------------------------------------------------------------------------------
'// Output
x=0
If IsArray(arrKategori) Then
For i = 0 To UBound(arrKategori, 2)
'// Kategorier
intID = arrKategori(0,i)
strKategori = arrKategori(1,i)
intAntalInlagg = arrKategori(2,i)
Response.Write strKategori &"<br>"
For s = 0 To cInt(intAntalInlagg)-1
'// Inlägg
intInlaggID = arrInlagg(1,x)
strInlaggRubrik = arrInlagg(2,x)
Response.Write "- "& strInlaggRubrik &" (id:"& intInlaggID &")<br>"
x=x+1
Next
If NOT i = UBound(arrKategori, 2) Then Response.Write "<br>"
Next
End If
%>[/red]
tabell 1: forumkategori
FKategoriID
Rubrik
Ordning
Visa
tabell 2: Foruminlagg
ForumID
Rubrik
Text
Forumkategori (som kopplas till "Rubrik" på tabellen "forumkategori")
hur ska koden se ut då? Testade Engine^:s kod, men fick detta felmesset:
Kompileringsfel i Microsoft VBScript (0x800A0401)
Slut på programsats förväntas.
/hhgspunktse/hhgs/forum.asp, line 29, column 23
objThreads.Open strSQL Connect, adOpenStatic, adLockReadOnly
----------------------^
Fått det löst... bytte ut alla recset till recset2 i andra förfrågan.
Dock, har jag inte fått nån bra if-sats som gör att den bara listar inlägg med matchande kolumn "forumkategori" till kolumnen "rubrik" i den första förfrågan.