Avatar billede psyclown Nybegynder
13. april 2002 - 13:32 Der er 25 kommentarer og
1 løsning

Udtræk af nyeste post

Jeg er igang med at lave et forum, det går egentligt fint nok og jeg har prøvet at udtrække datoen på den nyeste post og hvem der har postet med 1 SQL streng.
Hele koden er her nede under:

<%
'-----------------------
'-------- FORUM --------
'-----------------------
Dim rsForum             'Holds the Recordset for the forum details
Dim rsThreads            'Holds the recordset for the thread details
Dim ForumID                'Holds the forum ID number
Dim LastEntryDate        'Holds the date of the last entry to the forum
Dim LastEntryUser        'Holds the the username of the user who made the last entry
Dim LastEntryUserID        'Holds the ID number of the last user to make and entry

Set forumtemp = Server.CreateObject("ADoDB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("../../db/clan_ld_db_new.mdb")
forumtemp.open DSN
SQLFORUM = "SELECT * FROM Forums"
Set rsForum = forumtemp.execute(SQLFORUM)

If Not (rsForum.BOF or rsForum.EOF) Then

    Response.Write "<td align=""center"" valign=""top"" height=""135"" width=""425"" background=""design/Middle.jpg"">"
    Response.Write "<font color=""#000000"" face=""verdana"" size=""2""><br><br><br><br><br><br><br><br><br><br><br><b>Forum</b></font></td>"
    Response.Write "<td align=""left"" valign=""top"" height=""135"" colspan=""3"">"
    Response.Write "<img src=""design/Right.jpg"" width=""103"" height=""199""></td></tr>"
    Response.Write "<tr>"
    Response.Write "<td align=""left"" valign=""top"" width=""31"">&nbsp;</td>"
    Response.Write "<td align=""left"" valign=""top"" width=""16""><img src=""gIf/pixel.gIf"" width=""1"" height=""1""></td>"
    Response.Write "<td align=""left"" valign=""top"" background=""gIf/dims2B.gIf"" width=""12"">&nbsp;</td>"
    Response.Write "<td align=""left"" valign=""top"" width=""425"" bgcolor=""C5C5C5""><br>"
    '----------------------------
    '-------- FORUM MENU --------
    '----------------------------
    SQLTOTALT = "SELECT COUNT(TID) AS CountTotalT FROM F_threads" '---- TÆLLER ANTAL THREADS IALT
    Set rsTotalT = forumtemp.execute(SQLTOTALT)
    SQLTOTALP = "SELECT COUNT(RID) AS CountTotalP FROM F_Replies" '---- TÆLLER ANTAL POSTS IALT
    Set rsTotalP = forumtemp.execute(SQLTOTALP)
    Response.Write "<table border=""0"" align=""center"" cellpadding=""0"" cellspacing=""0"" width=""425""><tr><td>"
    Response.Write "<table style=""border: 1 solid #000000"" align=""center"" border=""0"" cellpadding=""0"" cellspacing=""0"" width=""400""><tr>"
    Response.Write "<td width=""100%"" valign=""top""><font color=""#000000""><b>Total threads: "& rsTotalT("CountTotalT") &"</b> - <b>Total Posts: "& rsTotalP("CountTotalP") &"</b></font></td>"
    Response.Write "</tr></table></td></tr></table><br>"
    '--------------------------------
    '-------- FORUM OVERVIEW --------
    '--------------------------------
    Response.Write "<table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""425""><tr><td>"
    Response.Write "<table style=""border: 1 solid #000000"" align=""center"" border=""0"" cellpadding=""0"" cellspacing=""0"" width=""400""><tr>"
    Response.Write "<td width=""53%"" align=""center"" valign=""top"" bgcolor=""#E8E8E8""><font color=""#000000""><b>Forums</b></font></td>"
    Response.Write "<td width=""35%"" align=""center"" valign=""top"" bgcolor=""#E8E8E8""><font color=""#000000""><b>Last post</b></font<</td>"
    Response.Write "<td width=""22%"" align=""center"" valign=""top"" bgcolor=""#E8E8E8""><font color=""#000000""><b>Threads</b></font></td>"
    Response.Write "</tr></table></td></tr></table>"   
   
    Do While Not rsForum.EOF
        ForumID = CInt(rsForum("ID"))

        Conntemp = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../../db/clan_ld_db_new.mdb")
        Set rsThread = Server.CreateObject("ADODB.Recordset")
        strSQL = "SELECT TOP 1 F_Replies.R_Date, Users.Alias, Users.UsrID "
        strSQL = strSQL & "FROM (Forums INNER JOIN F_Threads ON Forums.ID = F_Threads.FID) INNER JOIN (Users INNER JOIN F_Replies ON Users.UsrID = F_Replies.UsrID) ON F_Threads.TID = F_Replies.TID "
        strSQL = strSQL & "WHERE F_Threads.FID = " & ForumID & " "
        strSQL = strSQL & "ORDER BY F_Replies.R_Date DESC;"
        Response.Write strSQL
        rsThread.Open strSQL, Conntemp

        If Not rsThread.EOF Then
            LastEntryDate = CDate(rsThread("R_Date"))
            LastEntryUser = rsThread("Alias")
            LastEntryUserID = CLng(rsThread("UsrID"))

            SQLthreadS = "SELECT COUNT(TID) AS Countthreads FROM F_threads WHERE (FID = "& rsForum("ID") &")" 'TÆLLER ANTAL THREADS FOR HVERT FORUM
            Set rsthreads = forumtemp.execute(SQLthreadS)
        End If

        Response.Write "<table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""425""><tr><td>"
        Response.Write "<table style=""border-left: 1 solid #000000; border-right: 1 solid #000000; border-bottom: 1 solid #000000"" align=""center"" border=""0"" cellpadding=""0"" cellspacing=""0"" width=""400""><tr>"
        Response.Write "<td width=""53%"" style=""border-right: 1 solid #000000"" valign=""top""><a href=""threads.asp?ID="& rsForum("ID") &"""><b>"& rsForum("F_Name") &"</b></a><br>"& rsForum("F_Description") &"</td>"
        Response.Write "<td width=""35%"" style=""border-right: 1 solid #000000"" align=""center"" valign=""top"">"& LastEntryDate &"<br>"& LastEntryUser &"</td>"
        Response.Write "<td width=""22%"" align=""center"" valign=""top"">"& rsthreads("Countthreads") &"</td>"
        Response.Write "</tr></table></td></tr></table>"
        rsForum.movenext
    Loop
    rsthreads.Close : Set rsthreads = Nothing : rsForum.Close : Set rsForum = Nothing
End If
%>

Fejlen kan i se på www.limitless.dk/test/forum.asp

Linien hvor fejlen er i, er her nedenunder:

strSQL = "SELECT TOP 1 F_Replies.R_Date, Users.Alias, Users.UsrID "
strSQL = strSQL & "FROM (Forums INNER JOIN F_Threads ON Forums.ID = F_Threads.FID) INNER JOIN (Users INNER JOIN F_Replies ON Users.UsrID = F_Replies.UsrID) ON F_Threads.TID = F_Replies.TID "
strSQL = strSQL & "WHERE F_Threads.FID = " & ForumID & " "
strSQL = strSQL & "ORDER BY F_Replies.R_Date DESC;"

Har spørgsmål kan i bare spørge.
På forhånd tak!
Avatar billede kimiwan Nybegynder
13. april 2002 - 13:39 #1
du har formentlig skrevet forkerte feltnavne i din sql string - tjek at alle feltnavnene i sql stringen svarer til dem i databasen.
Avatar billede psyclown Nybegynder
13. april 2002 - 13:44 #2
Jeg har kigget det hele igennem flere gang nu og jeg kan ikke finde nogle steder, men jeg kan da lige prøve at skrive mine tabel navn og felter:

Forums: ID, F_Name, F_Cat, F_Description
F_Threads: TID, FID, T_Alias, T_Email, T_Topic, T_Post, T_Date
F_Replies: RID, TID, UsrID, R_Alias, R_Email, R_Post, R_Date
Avatar billede kimiwan Nybegynder
13. april 2002 - 13:48 #3
hvad med Users tabellen?
Avatar billede psyclown Nybegynder
13. april 2002 - 13:55 #4
aha..nu har jeg fundet fejlen..en typist lille fejl, man glemmer lige at sætte UsrID inde i F_Replies til Tal.
Den URL jeg har skrevet, passer ikke helt, det er ikke den rigtige db der ligger der, det må du undskylde, men du kan se det her:
http://212.242.188.97/limitless/test/forum.asp

Nu kommer der self. en anden fejl, men den kan jeg sikkert godt finde, men hvis du kan finde den hurtigere end mig, så får du dine point :)

Linie 77 er:
Response.Write "<td width=""22%"" align=""center"" valign=""top"">"& rsthreads("Countthreads") &"</td>"
Avatar billede kimiwan Nybegynder
13. april 2002 - 13:56 #5
hvad er fejlen?
Avatar billede psyclown Nybegynder
13. april 2002 - 13:57 #6
Avatar billede kimiwan Nybegynder
13. april 2002 - 14:02 #7
sorry, min tid er udløbet for nu.. jeg er nødt til at smutte :-/
Avatar billede psyclown Nybegynder
13. april 2002 - 14:02 #8
Den fejl har jeg fundet nu

Men nu udskriver den ikke så meget, som du kan se på siden, kan du hjælpe mig med det ?
Avatar billede psyclown Nybegynder
13. april 2002 - 14:03 #9
okay, fair nok
Avatar billede psyclown Nybegynder
13. april 2002 - 14:27 #10
nogen andre kloge hoveder, der vil tjene nogle point ?
Avatar billede kimiwan Nybegynder
13. april 2002 - 14:55 #11
så er jeg tilbage.. men fik du egentlig ikke svar på dit spørgsmål?
Avatar billede psyclown Nybegynder
13. april 2002 - 20:03 #12
jo, jeg fik svar på mit spørgsmål, men nu er der et andet problem, jeg kan lige ligge det op, så kan du se det på:

http://www.limitless.dk/test/forum.asp
Avatar billede kimiwan Nybegynder
13. april 2002 - 20:11 #13
Prøv at lav flg. ændring:

        If Not rsThread.EOF Then
            LastEntryDate = CDate(rsThread("R_Date"))
            LastEntryUser = rsThread("Alias")
            LastEntryUserID = CLng(rsThread("UsrID"))

            SQLthreadS = "SELECT COUNT(TID) AS Countthreads FROM F_threads WHERE (FID = "& rsForum("ID") &")" 'TÆLLER ANTAL THREADS FOR HVERT FORUM
            Set rsthreads = forumtemp.execute(SQLthreadS)
        End If

laves om til

        If Not rsThread.EOF Then
            LastEntryDate = CDate(rsThread("R_Date"))
            LastEntryUser = rsThread("Alias")
            LastEntryUserID = CLng(rsThread("UsrID"))

            SQLthreadS = "SELECT COUNT(TID) AS Countthreads FROM F_threads WHERE (FID = "& rsForum("ID") &")" 'TÆLLER ANTAL THREADS FOR HVERT FORUM
            Set rsthreads = forumtemp.execute(SQLthreadS)
        Else
            LastEntryDate = "Der er ingen last entry date!!!"
            LastEntryUser = "Der er ingen last entry user!!!"
            LastEntryUserID = "Der er ingen last entry user id!!!"
        End If
Avatar billede kimiwan Nybegynder
13. april 2002 - 20:13 #14
hm.. du bør nok have flg. i din else clause i stedet.. dvs. føj de sidste fire linjer til den!

            LastEntryDate = "Der er ingen last entry date!!!"
            LastEntryUser = "Der er ingen last entry user!!!"
            LastEntryUserID = "Der er ingen last entry user id!!!"
            response.write lastEntryDate & "<br>"
            response.write lastentryuser & "<br>"
            response.write lastentryuserid & "<br>"
            response.end
Avatar billede psyclown Nybegynder
13. april 2002 - 20:23 #15
Det virker da nogenlunde, ja du kan da prøve at se =)
Synes bare ikke rigtigt den skriver det som den skal..
Avatar billede kimiwan Nybegynder
13. april 2002 - 20:30 #16
Det er så fordi dit recordset rsThread er tomt.  Formentlig fordi der ikke er nogen data, den kan hente ud (hvis du ikke har fyldt noget, der passer sammen, i alle tabellerne)
Avatar billede psyclown Nybegynder
13. april 2002 - 20:35 #17
RID    TID    UsrID    R_Alias    R_Email    R_Post    R_Date
2    4    1    KegleN     webmaster@over.dk     sfsdfsf     28-12-2001 22:51:07

Nu ved jeg ikke om det kan ses, men hvis du kan se det, så er alle felterne fyldte og det er brugeren med UsrID 1 der har skrevet den nyeste post, men den skriver ikke nogen ud, den skriver stadigvæk at der ikke at nogle posts..
Avatar billede psyclown Nybegynder
13. april 2002 - 20:38 #18
glem det svar der, glemte lige at ligge db op...smart hva..
Avatar billede kimiwan Nybegynder
13. april 2002 - 20:40 #19
prøv at skrive sql strengen ud i stedet for at åbne rsThread

dvs. lige før "set rsthreads = forumtemp.execute...

skal du skrive:

response.write sqlthreads
response.end

så kan du se sql strengen.. og så kan du gå ind i ms access' query analyzer og se, hvad den returnerer.
Avatar billede psyclown Nybegynder
13. april 2002 - 20:40 #20
nu virker det hele næsten...

hvorfor skriver den også Der er ingen last entry date!!! osv. når der viser den sidste nyeste?
også skriver den stadig ikke hvor mange topics der er i forumet.
Avatar billede psyclown Nybegynder
13. april 2002 - 20:42 #21
aarrhh, jeg fumler rundt det her sry..

jeg ved godt hvorfor at den stadig skriver Der er ingen last entry date!!! osv.

Så jeg mangler bare det sidste svar..
Avatar billede kimiwan Nybegynder
13. april 2002 - 20:43 #22
det med "der er ingen bla bla bla" skal du jo lige fjerne igen :o)

mht. antal threads, der kan du jo gøre det samme som jeg nævnte før - udskriv sql strengen og kør den i access query analyzer for at se, hvad den returnerer ;o)
Avatar billede psyclown Nybegynder
13. april 2002 - 20:46 #23
jeg ved at SQL strengen virker, det gjorde inden at jeg begyndte på det med at finde den nyeste post osv. det er bare det, den udskriver den ikke, jeg har stilt den op sådan her nu:

            If Not rsThread.EOF Then
                LastEntryDate = CDate(rsThread("R_Date"))
                LastEntryUser = rsThread("Alias")
                LastEntryUserID = CLng(rsThread("UsrID"))

                SQLthreadS = "SELECT COUNT(TID) AS CountThreads FROM F_threads WHERE (FID = "& rsForum("ID") &")" 'TÆLLER ANTAL THREADS FOR HVERT FORUM
                Set rsThreads = forumtemp.execute(SQLthreadS)
       
                ThreadsCount = rsThreads("CountThreads")
            End If
Avatar billede psyclown Nybegynder
13. april 2002 - 20:48 #24
hmmm

Den skriver den samme nyeste post og det samme antal topic ud for alle forums...det går jo ligefrem ikke..
Avatar billede kimiwan Nybegynder
13. april 2002 - 20:49 #25
du må lige tænke det igennem en gang til, hvordan du skal gøre det *s*
Avatar billede psyclown Nybegynder
13. april 2002 - 21:00 #26
Ja, jeg tror også jeg har fået det til at virker nu, så ikke så svært...

Men tak for hjælpen og din tålmodighed...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester