Håller på med ett MYCKET enkelt forum. Jag vill räkna hur många svar det finns på varje inlägg som loopas ut. Allt ligger i samma tabell. Jag tänkte koppla ihop dem med "Id" och "ParentId" men vet inte hur jag ska skriva i SQL-frågan.
All info ska loopas ut med samma fråga som kollar hur många svar varje inlägg har.
Om posten Id = "42" har ParentId = "20" är post 42 alltså ett svar till post 20.
Alltid ska man krångla till det. Nu ser koden ut såhär:
Set rsShowTopics = ConnectToBoard.Execute("SELECT a.*, (SELECT Count(ParentId) FROM forum AS b WHERE b.ParentId = a.Id) AS strReplies FROM forum a WHERE a.ParentId = 0 ORDER BY a.PostedD, PostT")
If Not rsShowTopics.EOF Then arrRecSet = rsShowTopics.GetRows()
Men när jag vill skriva ut hur många svar det finns med strReplies skrivs IDet för posten ut istället.
Jag har använt arrRecSet(strReplies,i) för att försöka skriva ut antal svar.
Jag skulle även vilja göra så att den tråd som innehåller ett svar med det senaste datumet ska visas överst. Detta för att gamla trådar som fått ett nytt svar enkelt ska kunna besökas. Precis som det är här på wF. Hur ska jag sortera då i koden ovan?
Jo, men asp-variabeln strReplies bör ju (iaf enligt din kod) innehålla ordningsnumret för fältet i SQL-frågan, eftersom du använder det i utskriften i getrows().
Men jag vill att det ska vara antalet svar som finns på inlägget, därav Count i SQL-frågan.
For i = intFirstPost To intLastPost
If arrRecSet(strReplies,i) = 1 Then
strAnswers = arrRecSet(strReplies,i) & " reply"
Else
strAnswers = arrRecSet(strReplies,i) & " replies"
End If
If arrRecSet(strReplies,i) >= 10 Then
strLinkColor = "#990000"
ElseIf arrRecSet(strReplies,i) >= 5 Then
strLinkColor = "#FF9900"
ElseIf arrRecSet(strReplies,i) >= 2 Then
strLinkColor = "#339900"
Else
strLinkColor = "#000000"
End If
counter = counter + 1
If counter Mod 2 = 0 Then
color = "#EEEEEE"
Else
color = "#FFFFFF"
End If
Next
Ja, men var sätter du variabeln strReplies som du använder här
If arrRecSet([b]strReplies[/b],i) = 1 Then
?
Där bör finnas en siffra, ordningsnumret på kolumnen du vill skriva ut. När du använder GetRows har ASP ingen aning om vad dina fält heter, det är en helt vanlig tvådimensionell array.
Alltså. Om det skapade fältet strReplies är nummer 5 i din selectlista, så är ordningsnumret 4 (då vi börjar på 0.) Då borde if-satsen se ut så här: