Avatar billede daniel_d Nybegynder
24. januar 2003 - 13:32 Der 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
       
            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       
    Else
        If not objRs.Eof Then
            strArticle = objRs("article")
        Else
              strArticle = objRsForside("article")
        End If
    End If
End If


/Mvh
Avatar billede daniel_d Nybegynder
24. januar 2003 - 13:34 #1
Sorry ikke et Do og Wend, men While og Wend - Do er jo med Loop... men det var bare en tastefejl her i mit spørgsmål...
Avatar billede greybear Nybegynder
24. januar 2003 - 13:46 #2
"If 1=1 Then" vil altid være sandt, ikk?
Avatar billede daniel_d Nybegynder
24. januar 2003 - 13:46 #3
Jo... og ?
Avatar billede daniel_d Nybegynder
24. januar 2003 - 13:50 #4
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
Avatar billede greybear Nybegynder
24. januar 2003 - 13:50 #5
Bare et ? :-)) Hvordan ser din Response.Write strArticle ud?
Avatar billede daniel_d Nybegynder
24. januar 2003 - 13:51 #6
<%=(strArticle)%>
Avatar billede daniel_d Nybegynder
24. januar 2003 - 13:52 #7
Alt efter hvilken strArticle der er valgt vil den udskrive den fra den pågældende sql...
Avatar billede daniel_d Nybegynder
24. januar 2003 - 13:54 #8
synes selv d r smart :o)
Kan bare ikke lige dreje den med allnews... ved at få grå hår alt for tidligt *S*

/mvh
Avatar billede greybear Nybegynder
24. januar 2003 - 13:54 #9
I den kode du har lavet vil strArticle blive skiftet ud med en ny string i loopet med mindre du har koden til udskrift liggende inde i loopet.
Avatar billede daniel_d Nybegynder
24. januar 2003 - 13:55 #10
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
       
            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       
    Else
        If not objRs.Eof Then
            strArticle = objRs("article")
        Else
              strArticle = objRsForside("article")
        End If
    End If
End If


Sub writecount
if session("ID") = "0" Then
Else
  If Session("Readcount") = "" Then   
 
          strCount = objRs("Readcount")
        strCount = strCount + 1

            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
%>

/mvh
Avatar billede greybear Nybegynder
24. januar 2003 - 13:58 #11
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.
Avatar billede greybear Nybegynder
24. januar 2003 - 14:04 #12
%>
<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>
<%
If 1=1 Then
    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
<%
<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
%>
Avatar billede burningice Nybegynder
24. januar 2003 - 14:04 #13
det her burde virke

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
Avatar billede burningice Nybegynder
24. januar 2003 - 14:06 #14
strArticle = "<b>" & objRsNyheder("Heading") & "</b>" & "<br><i>" & objRsNyheder("NewsDateTime")  & "</i><br><br>"& (objRsNyheder("FullText"))

skal selvfølgelig være

strArticle = strArticle & "<b>" & objRsNyheder("Heading") & "</b>" & "<br><i>" & objRsNyheder("NewsDateTime")  & "</i><br /><br />"& (objRsNyheder("FullText"))
Avatar billede daniel_d Nybegynder
24. januar 2003 - 14:08 #15
greybear> synes dit forslag mangler en masse sql statements... :o)
Avatar billede daniel_d Nybegynder
24. januar 2003 - 14:16 #16
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...
Avatar billede daniel_d Nybegynder
24. januar 2003 - 14:17 #17
Men det er nok fordi de bruger samme id=tal, hvor jeg før løste det vha. min sjove if else statement
Avatar billede daniel_d Nybegynder
24. januar 2003 - 14:20 #18
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")
           
                StrLoopArticle = StrLoopArticle & "<b>" & objRsNyheder("Heading") & "</b>" & "<br><i>" & objRsNyheder("NewsDateTime")  & "</i><br><br>"& (objRsNyheder("FullText")) &"<br><br>"
               
          objRsNyheder.MoveNext
              Wend
           
            strArticle = StrLoopArticle     
    Else
        If not objRs.Eof Then
            strArticle = objRs("article")
        Else
              strArticle = objRsForside("article")
        End If
    End If
End If


Sub writecount
if session("ID") = "0" Then
Else
  If Session("Readcount") = "" Then   
 
          strCount = objRs("Readcount")
        strCount = strCount + 1

            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
%>
Avatar billede daniel_d Nybegynder
24. januar 2003 - 14:24 #19
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

Så nu virker det og jeg er en glad mand
Avatar billede burningice Nybegynder
24. januar 2003 - 14:30 #20
daniel_d>> ah, det er fordi der ikke er tjek på rsforside er bof eller eof...
Avatar billede daniel_d Nybegynder
24. januar 2003 - 14:34 #21
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
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