webForumDet fria alternativet

loop-fel... :(

35 svar · 414 visningar · startad av nakoz

nakozMedlem sedan dec. 1999653 inlägg
#1

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

------------------
nakoz :)

@ndersMedlem sedan juni 200032 969 inlägg
#2

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,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

nakozMedlem sedan dec. 1999653 inlägg
#3

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

------------------
nakoz :)

@ndersMedlem sedan juni 200032 969 inlägg
#4

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. ;)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

nakozMedlem sedan dec. 1999653 inlägg
#5

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

------------------
nakoz :)

@ndersMedlem sedan juni 200032 969 inlägg
#6

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?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

[Redigerat av @nders den 06 mar 2001]

nakozMedlem sedan dec. 1999653 inlägg
#7

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

------------------
nakoz :)

@ndersMedlem sedan juni 200032 969 inlägg
#8
  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...

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

nakozMedlem sedan dec. 1999653 inlägg
#9

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

------------------
nakoz :)

@ndersMedlem sedan juni 200032 969 inlägg
#10

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

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

nakozMedlem sedan dec. 1999653 inlägg
#11

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

------------------
nakoz :)

nakozMedlem sedan dec. 1999653 inlägg
#12

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

------------------
nakoz :)

@ndersMedlem sedan juni 200032 969 inlägg
#13

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

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

nakozMedlem sedan dec. 1999653 inlägg
#14

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

------------------
nakoz :)

@ndersMedlem sedan juni 200032 969 inlägg
#15

givetvis. my bad!

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

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

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

nakozMedlem sedan dec. 1999653 inlägg
#16

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

------------------
nakoz :)

nakozMedlem sedan dec. 1999653 inlägg
#17

: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

------------------
nakoz :)

nakozMedlem sedan dec. 1999653 inlägg
#18

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

------------------
nakoz :)

nakozMedlem sedan dec. 1999653 inlägg
#19

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: | svar:
hej | 1
hej2 | 1
hej3 | 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: | svar:
hej | 0
hej2 | 0
hej3 | 0

knas... hjälp tack :)

MVH

------------------
nakoz :)

[Redigerat av nakoz den 06 mar 2001]

nakozMedlem sedan dec. 1999653 inlägg
#20

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

MVH

------------------
nakoz :)

141 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)