---
title: "loop-fel... :("
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/8493-loop-fel"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "nakoz"
published: "2001-03-05T23:54:00.000Z"
updated: "2001-03-12T21:44:00.000Z"
replies: 35
views: 444
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/8493-loop-fel"
---

# loop-fel... :(

_Sida 1 av 2._

## #1 — nakoz, 2001-03-05T23:54Z

gaha! jag blir galen på detta jävla pws... får ju inte ens en chans att rätta till kodningen... error -\> reboot... bleh!

okej, den står bara å tuggar när den här, något ostrukturerade koden, körs.

```
<!-- #include file="../../inc/dbcons2.asp" -->

<html>
<head>
<title>Futurefitness - Forum</title>

<link type="text/css" rel="stylesheet" href="../../inloggad.css">

</head>
<body bgcolor="#FFFFFF">

<table cellpadding="0" cellspacing="0">
<tr><td width="100%" align="left" valign="top">
<%
Dim fID, inID, rubrik, av, senaste_inlagg, antalsvar, rs2

SQL = "SELECT fID, ForumNamn FROM fnamn WHERE fID = "& Request("forumID")
Set rs = cn.Execute(SQL)
fID = rs("fID")

Response.Write "<b>"& rs("ForumNamn") &"</b><br><br>"

SQL = "SELECT * FROM finlagg WHERE iForum = "& fID &" AND svarTill = 0 ORDER BY iID DESC"
Set rs = cn.Execute(SQL)

If rs.EOF Then
Response.Write "I detta diskussionsforum finns ännu inga inlägg!<br>"
Else

Response.Write "Gå till botten av denna sida för att starta ett nytt ämne.<br><br>"
Response.Write "<table cellpadding=2 cellspacing=1><tr bgcolor=#99B38B><td width=210><b>Ämne:</b></td><td width=100><b>"
Response.Write "Startad av:</b></td><td width=45><b>Svar:</b></td><td width=140><b>Senaste inlägget:</b></td></tr>"
Do Until rs.EOF
inID = rs("iID")
rubrik = rs("rubrik")
av = rs("av")
senaste_inlagg = rs("datum")
Set rs2 = Server.Createobject("ADODB.Recordset")
SQL = "SELECT Count(*) AS AntalSvar FROM finlagg WHERE svarTill = "& inID
Set rs2 = cn.Execute(SQL)
antalsvar = rs2("AntalSvar")
rs2.Close
SQL = "SELECT * FROM finlagg WHERE iForum = "& fID &" AND svarTill = 0 ORDER BY iID DESC"
Set rs = cn.Execute(SQL)
Response.Write "<tr><td><a href=inlagg.asp?forum="& fID &"&inlagg="& inID &">"& rubrik &"</a></td><td>"& av &"</td>"
Response.Write "<td>"& antalsvar &"</td><td>"& senaste_inlagg &"</td></tr>"
rs.MoveNext
Loop 
Response.Write "</table>"
End If
Response.Write "<br>"
%>

<hr size="1" noshade color="black">
<b>Skriv ett nytt inlägg:</b><br>
<form method="post" action="sparainlagg.asp">
<input type="hidden" name="iForum" value="<%= fID %>">
Ämne:<br>
<input type="text" maxlength="40" name="rubrik" <% If Session("browser") = "nn" Then %>class="inputNS" size="18"<% Else %>class="inputIE" size="30"<% End If %>><br>
<br>
Inlägg:<br>
<textarea wrap="VIRTUAL" name="inlagg" <% If Session("browser") = "nn" Then %>class="inputNS" rows="6" cols="18"<% Else %>class="inputIE" rows="7" cols="29"<% End If %>></textarea><br>
<br>
<input type="checkbox" name="anonym" value="anonym" onFocus="this.blur()"> Jag vill vara anonym<br>
<br>
<input type="submit" value="Skicka" <% If Session("browser") = "nn" Then %>class="inputNS"<% Else %>class="inputIE"<% End If %>><br>

</form>
</td></tr></table>
</body>
</html>
```

MVH

Permalänk: https://www.webforum.nu/p/8493

## #2 — @nders, 2001-03-06T05:27Z

du skapar ju om recordsetet rs inne i loopen av rs, det kan ju inte vara helt rätt? detta pajar nog loopen ganska ordentligt. :)

du skapar dessutom rs2 två gånger, en gång med server.createobject och en gång med .execute. jag föreslår att du tar bort den första.

```
Response.Write "Gå till botten av denna sida för att starta ett nytt ämne.<br><br>"
Response.Write "<table cellpadding=2 cellspacing=1><tr bgcolor=#99B38B><td width=210><b>Ämne:</b></td><td width=100><b>"
Response.Write "Startad av:</b></td><td width=45><b>Svar:</b></td><td width=140><b>Senaste inlägget:</b></td></tr>"
[b]Do Until rs.EOF[/b]
inID = rs("iID")
rubrik = rs("rubrik")
av = rs("av")
senaste_inlagg = rs("datum")
[b]Set rs2 = Server.Createobject("ADODB.Recordset")[/b]
SQL = "SELECT Count(*) AS AntalSvar FROM finlagg WHERE svarTill = "& inID
Set rs2 = cn.Execute(SQL)
antalsvar = rs2("AntalSvar")
rs2.Close
SQL = "SELECT * FROM finlagg WHERE iForum = "& fID &" AND svarTill = 0 ORDER BY iID DESC"
[b]Set rs = cn.Execute(SQL)[/b]
Response.Write "<tr><td><a href=inlagg.asp?forum="& fID &"&inlagg="& inID &">"& rubrik &"</a></td><td>"& av &"</td>"
Response.Write "<td>"& antalsvar &"</td><td>"& senaste_inlagg &"</td></tr>"
rs.MoveNext
[b]Loop[/b]
```

mvh,

Permalänk: https://www.webforum.nu/p/260938

## #3 — nakoz, 2001-03-06T07:28Z

hm... jag tog bort Server.CreateObject men den vill fortfarande inte gå igång riktigt... (tugg, tugg)
Sen testade jag å lägga allt som har med rs2 att göra i en egen loop inne i den stor loopen (!?) (fråga inte varför, men de kändes rätt just då :))

å nu öppnas iallafall sidan... (yeah! :e) men de blir såklart error så vi släpper de. 

menar du att jag ska ha allt under samma recordset @nders? eller ska jag fortfarande ha två olika?

MVH

Permalänk: https://www.webforum.nu/p/260939

## #4 — @nders, 2001-03-06T07:32Z

nee, men du kan ju inte definiera om ditt resultatset mitt inne i loopen, det tycker den liksom inte om. döp om den rs du använder inne i loopen.

du bör nog loopa detta recordset också. tror jag, har inte hunnit detaljstudera din kod. ;)

Permalänk: https://www.webforum.nu/p/260940

## #5 — nakoz, 2001-03-06T07:41Z

hmm... vilket borde ge oss typ följande: 

```
Do Until rs.EOF
inID = rs("iID")
rubrik = rs("rubrik")
av = rs("av")
senaste_inlagg = rs("datum")

Do Until rs.EOF
SQL = "SELECT Count(*) AS AntalSvar FROM finlagg WHERE svarTill = "& inID
Set rs = cn.Execute(SQL)
antalsvar = rs("AntalSvar")
rs.MoveNext
Loop

SQL = "SELECT * FROM finlagg WHERE iForum = "& fID &" AND svarTill = 0 ORDER BY iID DESC"
Set rs = cn.Execute(SQL)
Response.Write "<tr><td><a href=inlagg.asp?forum="& fID &"&inlagg="& inID &">"& rubrik &"</a></td><td>"& av &"</td>"
Response.Write "<td>"& antalsvar &"</td><td>"& senaste_inlagg &"</td></tr>"
rs.MoveNext
Loop
```

detta blir ett tugg-resultat de me = no good :)
eller den andra loopen kanske inte ska ligga i den stora? utan separat?

MVH

Permalänk: https://www.webforum.nu/p/260941

## #6 — @nders, 2001-03-06T07:47Z

jag förstår det... ;)

prova nånting sånt härnt:

```
inID = rs("iID")
rubrik = rs("rubrik")
av = rs("av")
senaste_inlagg = rs("datum")
Do Until rs.EOF

     SQL = "SELECT Count(*) AS AntalSvar FROM finlagg WHERE svarTill = "& inID
     Set rs2 = cn.Execute(SQL)
     antalsvar = rs("AntalSvar")

     SQL = "SELECT top 1 * FROM finlagg WHERE iForum = "& fID &" AND svarTill = 0 ORDER BY iID DESC"
     Set rs2 = cn.Execute(SQL)
     Response.Write "<tr><td><a href=inlagg.asp?forum="& fID &"&inlagg="& inID &">"& rubrik &"</a></td><td>"& av &"</td>"
     Response.Write "<td>"& antalsvar &"</td><td>"& senaste_inlagg &"</td></tr>"

     rs.MoveNext
Loop
```

se att jag nu har återanvänt recordsetet rs2, och inte loopar det någon gång. för nu tror jag jag förstått vad koden ska göra.

är jag på rätt spår?

Permalänk: https://www.webforum.nu/p/260942

## #7 — nakoz, 2001-03-06T07:59Z

yes! anti-tugg! :)

inget felmeddelande heller.
1) varför använder du top 1? jag vill ju att den ska lista alla inlägg... å top 1 kommer ju alltid vara top 1 hur många gånger vi än loopar inläggen :)

2) jag har 2 stycken poster i forumet, som har svarTill = 0. Den visar just nu endast den senaste 2ggr... ? :/

MVH

Permalänk: https://www.webforum.nu/p/260943

## #8 — @nders, 2001-03-06T08:05Z

1) för att jag missförstod din kod.. ;)
då får du ta bort top 1 och sätta en loop runt.

2) börja med ovan så får vi se vart du kommer...

Permalänk: https://www.webforum.nu/p/260944

## #9 — nakoz, 2001-03-06T08:08Z

samma fel... den listar senaste inlägget lika många gånger som de finns inlägg WHERE svarTill = 0

de e väl för att vi definierar variablerna som jag använder när jag printar allt på sidan INNAN loopen... de måste väl in i den på nå sätt? har testat lite, men får de inte å funka...

MVH

Permalänk: https://www.webforum.nu/p/260945

## #10 — @nders, 2001-03-06T08:13Z

kan du posta hela koden, som den ser ut nu?

Permalänk: https://www.webforum.nu/p/260946

## #11 — nakoz, 2001-03-06T08:16Z

okej... å de funkar inte å få in en loop i den stora loopen.. då blire bara massa lagg :) (2 reboots redan :o)

```
<!-- #include file="../../inc/dbcons2.asp" -->

<html>
<head>
<title>Futurefitness - Forum</title>

<link type="text/css" rel="stylesheet" href="../../inloggad.css">

</head>
<body bgcolor="#FFFFFF">

<table cellpadding="0" cellspacing="0">
<tr><td width="100%" align="left" valign="top">
<%
Dim fID, inID, rubrik, av, senaste_inlagg, antalsvar, rs2

SQL = "SELECT fID, ForumNamn FROM fnamn WHERE fID = "& Request("forumID")
Set rs = cn.Execute(SQL)
fID = rs("fID")

Response.Write "<b>"& rs("ForumNamn") &"</b><br><br>"

SQL = "SELECT * FROM finlagg WHERE iForum = "& fID &" AND svarTill = 0 ORDER BY iID DESC"
Set rs = cn.Execute(SQL)

If rs.EOF Then
Response.Write "I detta diskussionsforum finns ännu inga inlägg!<br>"
Else

Response.Write "Gå till botten av denna sida för att starta ett nytt ämne.<br><br>"
Response.Write "<table cellpadding=2 cellspacing=1><tr bgcolor=#99B38B><td width=210><b>Ämne:</b></td><td width=100><b>"
Response.Write "Startad av:</b></td><td width=45><b>Svar:</b></td><td width=140><b>Senaste inlägget:</b></td></tr>"

inID = rs("iID")
rubrik = rs("rubrik")
av = rs("av")
senaste_inlagg = rs("datum")

[b]Do Until rs.EOF
SQL = "SELECT Count(*) AS AntalSvar FROM finlagg WHERE svarTill = "& inID
Set rs2 = cn.Execute(SQL)
antalsvar = rs2("AntalSvar")

SQL = "SELECT * FROM finlagg WHERE iForum = "& fID &" AND svarTill = 0 ORDER BY iID DESC"
Set rs2 = cn.Execute(SQL)

Response.Write "<tr><td><a href=inlagg.asp?forum="& fID &"&inlagg="& inID &">"& rubrik &"</a></td><td>"& av &"</td>"
Response.Write "<td>"& antalsvar &"</td><td>"& senaste_inlagg &"</td></tr>"

rs.MoveNext
Loop[/b]

Response.Write "</table>"
End If
Response.Write "<br>"
%>

<hr size="1" noshade color="black">
<b>Skriv ett nytt inlägg:</b><br>
<form method="post" action="sparainlagg.asp">
<input type="hidden" name="iForum" value="<%= fID %>">
Ämne:<br>
<input type="text" maxlength="40" name="rubrik" <% If Session("browser") = "nn" Then %>class="inputNS" size="18"<% Else %>class="inputIE" size="30"<% End If %>><br>
<br>
Inlägg:<br>
<textarea wrap="VIRTUAL" name="inlagg" <% If Session("browser") = "nn" Then %>class="inputNS" rows="6" cols="18"<% Else %>class="inputIE" rows="7" cols="29"<% End If %>></textarea><br>
<br>
<input type="checkbox" name="anonym" value="anonym" onFocus="this.blur()"> Jag vill vara anonym<br>
<br>
<input type="submit" value="Skicka" <% If Session("browser") = "nn" Then %>class="inputNS"<% Else %>class="inputIE"<% End If %>><br>

</form>
</td></tr>
</table>
</body>
</html>
```

jag har fet-stilat problemområdet :)

MVH

Permalänk: https://www.webforum.nu/p/260947

## #12 — nakoz, 2001-03-06T08:31Z

jag kan ju förklara lite runtom så länge.
har en kolumn i tabellen fInlagg som heter svarTill. Om det är ett svar till ett inlägg så kommer svarTill att innehålla ID:t till det inlägg de är svar på. Alltså kommer alla inlägg med svarTill = 0 att vara "rotinlägg" samt att alla där svarTill \<\> 0 är ett svar på ett av "rotinläggen".

MVH

Permalänk: https://www.webforum.nu/p/260948

## #13 — @nders, 2001-03-06T08:34Z

prova det här då:

```
If rs.EOF Then
Response.Write "I detta diskussionsforum finns ännu inga inlägg!<br>"
Else

Response.Write "Gå till botten av denna sida för att starta ett nytt ämne.<br><br>"
Response.Write "<table cellpadding=2 cellspacing=1><tr bgcolor=#99B38B><td width=210><b>Ämne:</b></td><td width=100><b>"
Response.Write "Startad av:</b></td><td width=45><b>Svar:</b></td><td width=140><b>Senaste inlägget:</b></td></tr>"

Do Until rs.EOF

     inID = rs("iID")
     rubrik = rs("rubrik")
     av = rs("av")
     senaste_inlagg = rs("datum")

     SQL = "SELECT Count(*) AS AntalSvar FROM finlagg WHERE svarTill = "& inID
     Set rs2 = cn.Execute(SQL)
     antalsvar = rs2("AntalSvar")

     SQL = "SELECT * FROM finlagg WHERE iForum = "& fID &" AND svarTill = 0 ORDER BY iID DESC"
     Set rs2 = cn.Execute(SQL)
     do until rs2.eof
          Response.Write "<tr><td><a href=inlagg.asp?forum="& fID &"&inlagg="& inID &">"& rubrik &"</a></td><td>"& av &"</td>"
          Response.Write "<td>"& antalsvar &"</td><td>"& senaste_inlagg &"</td></tr>"
     rs2.movenext

rs.MoveNext
Loop

Response.Write "</table>"
End If
Response.Write "<br>"
%>
```

Permalänk: https://www.webforum.nu/p/260949

## #14 — nakoz, 2001-03-06T08:41Z

okej... detta e skumt.. nu får jag ett felmeddelande:
Kompileringsfel i Microsoft VBScript fel '800a0400' 

Programsats förväntas. 

/jobb/futurefitness/html/inl/forum/forum.asp, rad 52 

End If
^

varför säger den så? :(

MVH

Permalänk: https://www.webforum.nu/p/260950

## #15 — @nders, 2001-03-06T08:50Z

givetvis. my bad!

jag glömde en 'loop' på raden direkt efter rs2.movenext.

lägg till loop där, så ska vi se...

Permalänk: https://www.webforum.nu/p/260951

## #16 — nakoz, 2001-03-06T08:54Z

2 inlägg visas, å de är identiska :(

någon vill verkligen att detta inte ska funka :/

testade din kod å att ändra på lite grejer oxå.. men den vill ändå bara visa de senast skrivna inlägget... :(

MVH

Permalänk: https://www.webforum.nu/p/260952

## #17 — nakoz, 2001-03-06T08:57Z

:e :e :e :e :e

YES YES YES! :)
Jag löste de... visste att de va variablerna som inte ville loopa om sig... check this out @nders :e

```
Do Until rs.EOF
inID = rs("iID")

SQL = "SELECT Count(*) AS AntalSvar FROM finlagg WHERE svarTill = "& inID
Set rs2 = cn.Execute(SQL)
antalsvar = rs2("AntalSvar")

SQL = "SELECT * FROM finlagg WHERE iForum = "& fID &" AND svarTill = 0 ORDER BY iID DESC"
Set rs2 = cn.Execute(SQL)

Do Until rs2.EOF
inID2 = rs2("iID")
rubrik = rs2("rubrik")
av = rs2("av")
senaste_inlagg = rs2("datum")
Response.Write "<tr><td><a href=inlagg.asp?forum="& fID &"&inlagg="& inID2 &">"& rubrik &"</a></td><td>"& av &"</td>"
Response.Write "<td>"& antalsvar &"</td><td>"& senaste_inlagg &"</td></tr>"
rs2.MoveNext
rs.MoveNext
Loop
Loop
```

tack så jättemycket för din hjälp - couldn't have done it without you :)

MVH

Permalänk: https://www.webforum.nu/p/260953

## #18 — nakoz, 2001-03-06T08:59Z

haha... nästan iallafall.. :)
i min lycka så missade jag att den inte räknade ut hur många som svarat på inlägget :)

om du vet så får du gärna säga :)

MVH

Permalänk: https://www.webforum.nu/p/260954

## #19 — nakoz, 2001-03-06T10:22Z

okej.. jag har knåpat lite men fortfarande inte löst det.. 

koden för looparna är:

```
Do Until rs.EOF
[b]inID = rs("iID")[/b]
SQL = "SELECT Count(*) AS AntalSvar FROM finlagg WHERE svarTill = "& inID
Set rs2 = cn.Execute(SQL)
antalsvar = rs2("AntalSvar")

SQL = "SELECT * FROM finlagg WHERE iForum = "& fID &" AND svarTill = 0 ORDER BY iID DESC"
Set rs2 = cn.Execute(SQL)

Do Until rs2.EOF
inID = rs2("iID")
inID2 = rs2("iID")
rubrik = rs2("rubrik")
av = rs2("av")
senaste_inlagg = rs2("datum")
Response.Write "<tr><td><a href=inlagg.asp?forum="& fID &"&inlagg="& inID2 &">"& rubrik &"</a></td><td>"& av &"</td>"
Response.Write "<td>"& antalsvar &"</td><td>"& senaste_inlagg &"</td></tr>"
rs2.MoveNext
rs.MoveNext
Loop
Loop
```

okej, detta har jag kommit fram till. Jag har 3 "rotinlägg" i databasen, och ett svar. Om svaret är till det överst listade inlägget så får samtliga tre "rotinlägg" 1 som antal svar. Om svaret eller svaren ligger på de två andra inläggen så visas 0 som antal svar. 

Detta resulterar i att raden som jag skrivit i fet stil i min kod inte loopas korrekt om jag fattat rätt.

för att förtydliga lite, om svaret är till inlägg 1:
ämne: &#0124; svar:
hej     &#0124; 1
hej2   &#0124; 1
hej3   &#0124; 1
fast inlägg 2-3 inte har något svar.

har istället inlägg 2 eller 3 något svar ser de ut såhär:
ämne: &#0124; svar:
hej     &#0124; 0
hej2   &#0124; 0
hej3   &#0124; 0

knas... hjälp tack :)

MVH

Permalänk: https://www.webforum.nu/p/260955

## #20 — nakoz, 2001-03-06T16:54Z

kommigen nu då! inga fler förslag @nders? eller nån annan? :/

MVH

Permalänk: https://www.webforum.nu/p/260956

---

Tråden på webben: https://www.webforum.nu/amne/asp/8493-loop-fel  
Nästa sida: https://www.webforum.nu/amne/asp/8493-loop-fel/page2.md
