24. januar 2003 - 13:32Der er
19 kommentarer og 2 løsninger
Vis alle nyheder. lille problem med min syntax
Hej alle sammen. Sidder lige med lidt kode der gør bøvl!
Kort om problemet: Jeg har to sider: index.asp og indhold.asp Index.asp har forskellige a href="" som kan ende på
?id=(tal) ?id=allnews
Det er så min indhold.asp der afgør hvilken tabel der skal vises fra. Alt sammen virker perfekt. Bare ikke allnews. Jeg er kommet så langt at hvis jeg vælger allnews udskriver den en response.write("du har valgt alle nyhederne - test") Dette er bare for at jeg er sikker på at den har fat i den rigtige sql. Dernæst skulle den udskrive alle nyhederne, men det gør den bare ikke. Kun den første. Selvom jeg har lavet et Do & Wend(loop)
Hvad kan der være galt ?
Her er min kode:
If Request.Querystring("id") = ("allnews") Then Response.Write("Du har valgt alle nyhederne - test") Set objRsNyheder = Con.Execute("SELECT * FROM tblNews ORDER BY id DESC") Else Set objRsNyheder = Con.Execute("SELECT * FROM tblNews WHERE ID=" & request.querystring("ID")) Set objRs = Con.Execute("SELECT * FROM articles WHERE ID=" & request.querystring("ID")) Set objRsForside = Con.Execute("SELECT * FROM forside WHERE ID=" & request.querystring("ID")) End If
If 1=1 Then If not objRsNyheder.Eof Then While not objRsNyheder.Eof
d r meningen. Du kan ikke bare skrive If, eller if then Jeg brugte if 1=1 then. 1 er altid lig 1 og derfor kører den min syntax. Jeg var nødt til det da jeg har flere if else statements i samme if else end if
Kan godt være der er smartere måder at gøre det på, men det virker, og det kører hurtigt, så... Men det er jo heller ikke det som er problemet.. det er mit allnews Wend som ikke fungerer
Det har jeg ikke... Du må gerne se hele koden. Den er heldigvis ikke så lang.
<% If Len(Request.Servervariables("query_string")) = 0 then Response.Redirect Request.Servervariables("script_name") & "?ID=0" end if
Response.Buffer = True
' Tilslutning til databasen Set Con = Server.CreateObject("ADODB.Connection") DBPath = "DBQ=" & server.mappath("CMS.mdb") Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
If Request.Querystring("id") = ("allnews") Then Response.Write("Du har valgt alle nyhederne - test") Set objRsNyheder = Con.Execute("SELECT * FROM tblNews ORDER BY id DESC") Else Set objRsNyheder = Con.Execute("SELECT * FROM tblNews WHERE ID=" & request.querystring("ID")) Set objRs = Con.Execute("SELECT * FROM articles WHERE ID=" & request.querystring("ID")) Set objRsForside = Con.Execute("SELECT * FROM forside WHERE ID=" & request.querystring("ID")) End If
If 1=1 Then If not objRsNyheder.Eof Then While not objRsNyheder.Eof
if strCount = 1 Then Response.Write("<br><br>Denne artikel er læst "&(strCount)&" gang") else Response.Write("<br><br>Denne artikel er læst "&(strCount)&" gange") end if
Set objRs = Con.Execute("UPDATE articles SET readcount = " & strCount & " WHERE ID=" & Session("id"))
session("Readcount")=""
else
End if End if End sub %> <html> <head> <meta http-equiv="Content-Language" content="da"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>Ny side 1</title> <link rel="stylesheet" type="text/css" href="default.css"> <STYLE type=text/css> BODY{ scrollbar-3dlight-color: #000000; scrollbar-arrow-color: #000000; scrollbar-base-color: #FFFFFF; scrollbar-dark-shadow-color: #FFFFFF; scrollbar-face-color: #C0C0C0; scrollbar-highlight-color: #FFFFFF; scrollbar-shadow-color: #FFFFFF; } </STYLE> </head> <body topmargin="0" leftmargin="0" bgcolor="#F5F5F5"> <div align="center"> <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%"> <tr> <td style="padding: 5;" valign="top" class="text"><%=(strArticle)%></td> </tr> </table> </div> </body> </html> <% session("id")="" ' Lukker forbindelsen Con.Close Set Con = Nothing %>
Så er det dit problem. Som resultat af det loop du har lavet vil der kun komme en string ud. Du skal have flyttet din udskrivning op i loopet før MoveNext.
objRsNyheder.MoveNext <% <td style="padding: 5;" valign="top" class="text"><%=(strArticle)%></td> %> Wend Else If not objRs.Eof Then strArticle = objRs("article") Else strArticle = objRsForside("article") End If End If End If %> </tr> </table> </div> </body> </html> <% session("id")="" ' Lukker forbindelsen Con.Close Set Con = Nothing %>
intId = Request.Querystring("id") If intId = "" Then intId = 1 ElseIf intId = "allnews" then intId = "allnews" Else intID = CInt(intId) End If
If intId = "allnews" Then Response.Write("Du har valgt alle nyhederne - test") strSQL = "SELECT * FROM tblNews ORDER BY id DESC"
Else strSQL = "SELECT * FROM tblNews WHERE ID=" & intId End If Set objRsNyheder = Con.Execute(strSQL)
If Not objRsNyheder.Eof Then While not objRsNyheder.Eof
Overskrift = objRsNyheder("Heading") dato = objRsNyheder("Heading") tekst = objRsNyheder("Heading") strArticle = "<b>" & objRsNyheder("Heading") & "</b>" & "<br><i>" & objRsNyheder("NewsDateTime") & "</i><br><br>"& (objRsNyheder("FullText")) objRsNyheder.MoveNext Wend End If
If Not intId = "allnews" Then Set objRs = Con.Execute("SELECT * FROM articles WHERE ID=" & intId) Set objRsForside = Con.Execute("SELECT * FROM forside WHERE ID=" & intId)
If Not objRs.Eof Then strArticle = objRs("article") Else strArticle = objRsForside("article") End If End If
cyberfessor> dit forslag virker fint, bortset fra at man nu ikke kan vælge en enkelt nyhed. Hvis jeg f.eks. fra index.asp vælger en nyhed med id=66 får jeg denne fejl: ADODB.Field error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/cases/nke/indhold.asp, line 49
linie 49 er: strArticle = objRsForside("article")
Som slet ikke burde have noget med min news at gøre...
Heh... jeg kan så oplyde at denne virker helt efter planen: Den kan måske optimeres lidt, men... den virker og som sagt kører det hurtigt nok.
<% If Len(Request.Servervariables("query_string")) = 0 then Response.Redirect Request.Servervariables("script_name") & "?ID=0" end if
Response.Buffer = True
' Tilslutning til databasen Set Con = Server.CreateObject("ADODB.Connection") DBPath = "DBQ=" & server.mappath("CMS.mdb") Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
If Request.Querystring("id") = ("allnews") Then Set objRsNyheder = Con.Execute("SELECT * FROM tblNews ORDER BY id DESC") Else Set objRsNyheder = Con.Execute("SELECT * FROM tblNews WHERE ID=" & request.querystring("ID")) Set objRs = Con.Execute("SELECT * FROM articles WHERE ID=" & request.querystring("ID")) Set objRsForside = Con.Execute("SELECT * FROM forside WHERE ID=" & request.querystring("ID")) End If
If 1=1 Then If not objRsNyheder.Eof Then
While not objRsNyheder.Eof
Overskrift = objRsNyheder("Heading") dato = objRsNyheder("Heading") tekst = objRsNyheder("Heading")
if strCount = 1 Then Response.Write("<br><br>Denne artikel er læst "&(strCount)&" gang") else Response.Write("<br><br>Denne artikel er læst "&(strCount)&" gange") end if
Set objRs = Con.Execute("UPDATE articles SET readcount = " & strCount & " WHERE ID=" & Session("id"))
session("Readcount")=""
else
End if End if End sub %> <html> <head> <meta http-equiv="Content-Language" content="da"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>Ny side 1</title> <link rel="stylesheet" type="text/css" href="default.css"> <STYLE type=text/css> BODY{ scrollbar-3dlight-color: #000000; scrollbar-arrow-color: #000000; scrollbar-base-color: #FFFFFF; scrollbar-dark-shadow-color: #FFFFFF; scrollbar-face-color: #C0C0C0; scrollbar-highlight-color: #FFFFFF; scrollbar-shadow-color: #FFFFFF; } </STYLE> </head> <body topmargin="0" leftmargin="0" bgcolor="#F5F5F5"> <div align="center"> <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%"> <tr> <td style="padding: 5;" valign="top" class="text"><%=(strArticle)%></td> </tr> </table> </div> </body> </html> <% session("id")="" ' Lukker forbindelsen Con.Close Set Con = Nothing %>
cyberfessor> smid et svar. Der er point til jer begge. Greybear hjalp mig med at forstå hvad der var galt, men det var din lille strArticle = strArticle & en masse kode som løste puslespillet Før skrev jeg jo kun: strArticle = en masse kode
Tja, som sagt aner jeg ikke om der er smartere måder at gøre dette på, eller om min kode er 100% sikker i en worst case scenario. Det viker dog fint for mig.
Tak for hjælpen. /mvh
Synes godt om
Ny brugerNybegynder
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.