Hmm har du inte möjlighet att lägga detta i en Applications variabel...
Langa upp en funktion som skriver i En Applications variabel den senaste händelsen. Så slipper du fråga databasen med en helt onödigt fråga...
9 svar · 408 visningar · startad av flexish
Tjena alla!
Jag har håller på att bygga ett forum och på förstasidan vill jag att det skall finnas en kolumn där det står senaste händelse i varje forum. Mitt problem är att jag har två separata tabeller för trådar och svar i min databas (Access) men jag vill hämta den senaste händelsen...oavsett om det är en tråd eller ett svar. Jag vet inte riktigt hur jag ska bygga upp min SQL-fråga för att göra detta.
Tabellerna ser ut enligt följande:
tblThread
- threadId (trådens id)
- forumId (i vilket forum tråden skall vara)
- threadName (rubriken på tråden)
- threadAuthor (den som skrivit tråden)
- threadText (själva inlägget)
- threadDateTime (när det skrevs)
tblPost
- postId (svarets id)
- threadId (vilken tråd svaret tillhör)
- forumId (vilket forum svaret ligger i)
- postName (rubrik på svaret)
- postAuthor (vem som har skrivit svaret)
- postText (inlägget)
- postDateTime (när inlägget skrevs)
Någon som kan hjälpa mig att utforma SQL-frågan så den väljer det som hänt senast oavsett i vilken tabell det är?
Tack på förhand!
Med vänlig hälsning
Stefan
Hmm har du inte möjlighet att lägga detta i en Applications variabel...
Langa upp en funktion som skriver i En Applications variabel den senaste händelsen. Så slipper du fråga databasen med en helt onödigt fråga...
Fraggel skrev:
Hmm har du inte möjlighet att lägga detta i en Applications variabel...
Langa upp en funktion som skriver i En Applications variabel den senaste händelsen. Så slipper du fråga databasen med en helt onödigt fråga...
Hur menar du?
Fraggel menar:
Vid varje gång något händer i databasen, skriv händelsen till en applikationsvariabel:
Application("LastEvent") = "Pelle skrev ett inlägg i tråden <i>Gratis pengar</i>."
Sedan skriver du bara ut innehållet i applikationsvariabeln där du vill skriva ut det senaste som hänt:
Response.write Application("LastEvent")
Det kan ju dock bli väldigt många ställen att lägga till koden på.
En SQL-fråga för att hämta senaste tråd/inlägg, kanske kan se ut något liknande denna:
SELECT TOP 1 * FROM tblThread
LEFT JOIN tblPost ON tblThread.threadID = tblPost.threadID
ORDER BY Iif(tblPost.postDateTime IS NULL, #1970-01-01#, postDateTime) DESC,
threadDateTime DESC
I din asp-kod börjar du sedan med att kontrollera om fältet postDateTime är null eller inte, så du vet vilka fält du ska skriva ut från ditt recordset.
Slutligen: välkommen till webForum!
mvh
Jag får det inte riktigt att fungera...
Den klagar på att "Objektet kunde inte hittas..." vilket är konstigt med tanke på att allt finns och jag har gjort en kontroll som kollar ifall den inte innehåller något värde.
Visa kod.
Du har inte råkat skriva fel på ett fältnamn i asp-koden när du ska använda data ifrån recordsetet?
Koden ser ut enligt följande:
strSQL = "SELECT TOP 1 * FROM tblThread LEFT JOIN tblPost ON tblThread.threadId = tblPost.threadId WHERE tblThread.forumId = " & cLng(rsForum(0)) & " ORDER BY Iif(tblPost.postDateTime IS NULL, #1970-01-01#, postDateTime) DESC, threadDateTime DESC"
set rsLatest = objConn.Execute(strSQL)
if not rsLatest.EOF then
if IsNull(rsLatest("postDateTime")) then
Response.Write "<td class=""forum"">" & rsLatest("threadDateTime") & "<br>"
Response.Write "<b>Av:</b> " & rsLatest("threadAuthor") & " <a href=""thread.asp?id=" & rsLatest("threadId") & """><img src=""grafik/pil.gif"" border=""0"" alt=""Gå till tråden"" title=""Gå till tråden""></a></td>"
else
Response.Write "<td class=""forum"">" & rsLatest("postDateTime") & "<br>"
Response.Write "<b>Av:</b> " & rsLatest("postAuthor") & " <a href=""thread.asp?id=" & rsLatest("threadId") & """><img src=""grafik/pil.gif"" border=""0"" alt=""Gå till tråden"" title=""Gå till tråden""></a></td>"
end if
else
Response.Write "<td> </td>"
end if
Du måste nog förresten ha med båda tabellerna i SELECT. Så här:
strSQL = "SELECT TOP 1 tblThread.*, tblPost.* FROM tblThread LEFT JOIN tblPost ON tblThread.threadId = tblPost.threadId WHERE tblThread.forumId = " & cLng(rsForum(0)) & " ORDER BY Iif(tblPost.postDateTime IS NULL, #1970-01-01#, postDateTime) DESC, threadDateTime DESC"
mvh
Tack det fungerade perfekt!