webForumDet fria alternativet

Function i loop = skumt

5 svar · 238 visningar · startad av znyder

znyderMedlem sedan dec. 2002175 inlägg
#1

Hej igen (3 timmar senare)
Jag har problem igen. Jag kör en loop och använder en function för att hämta div. saker... men den skriver endast ut 1 rad, sen struntar den i dom andra 5 raderna.

Loopar ut raderna:

<%
SET RStemp = MinCon.Execute("SELECT * FROM forum_sektioner ORDER BY sortering")
Do While NOT RStemp.EOF

SET temp1 = MinCon.Execute("SELECT count(*) FROM forum WHERE sektion=" & RStemp("sektion_nr") & " AND typ='amne'")
amnen = temp1(0)
SET temp1 = MinCon.Execute("SELECT count(*) FROM forum WHERE sektion=" & RStemp("sektion_nr") & " AND typ='svar'")
svar = temp1(0)
SET temp1 = MinCon.Execute("SELECT * FROM forum WHERE sektion=" & RStemp("sektion_nr") & " ORDER BY datum DESC")
IF temp1.EOF THEN
forum = "tomt"
ELSE
senaste_inlagg_d = temp1("datum")
senaste_inlagg_t = temp1("datum")
senaste_inlagg_a = temp1("anv_ID")
END IF
%>

<TR HEIGHT="30" BGCOLOR="#D6DBE1">
<TD WIDTH="301"><IMG SRC="bilder/x.gif"> <FONT SIZE="2"><A HREF="forum.asp?sektion=<%=RStemp("sektion_nr")%>"><B><%=RStemp("sektion")%></B></A></FONT></TD>
<TD WIDTH="160" ALIGN="center"><FONT SIZE="1"><I><%=amnen%> / <%=svar%></I></TD>
<% IF forum = "tomt" THEN %>
<TD WIDTH="188" ALIGN="right"></TD>
<% ELSE %>
<TD WIDTH="188" ALIGN="right"><FONT SIZE="1"><B><I><FONT COLOR="#FE8A01"><%=hamta_dag(senaste_inlagg_d)%></FONT></B> <%=hamta_tid(senaste_inlagg_t)%><IMG SRC="bilder/x.gif"><BR>av <A HREF="profil.asp?ID=<%=senaste_inlagg_a%>"><%=hamta_anv(senaste_inlagg_a)%></A><IMG SRC="bilder/x.gif"></TD>
<% END IF %>
</TR>

<%
RStemp.MoveNext
Loop
%>

Och functionerna:

<%
Dim temp_anv
Dim temp_tid
Dim temp_dag

Function hamta_anv(temp_anv)
temp_anv = temp_anv & ""
SET RStemp = MinCon.Execute("SELECT * FROM medlemmar WHERE ID=" & temp_anv & "")
hamta_anv = RStemp("anv_namn")
End Function

Function hamta_tid(temp_tid)
temp_tid = temp_tid & ""
hamta_tid = Left(Right(temp_tid, 8),5)
End Function

Function hamta_dag(temp_dag)
temp_dag = temp_dag & ""
temp_dag = left(temp_dag, 10)
IF Cdate(temp_dag) = date THEN
temp_dag = "IDAG"
ELSEIF Cdate(temp_dag) = date - 1 THEN
temp_dag = "IGÅR"
ELSE
temp_dag = Ucase(Weekdayname(Weekday(temp_dag))) & " " & Day(temp_dag) & "/" & Month(temp_dag)
END IF
hamta_dag = temp_dag
End Function
%>

Har jag missat nått totalt?

LarsGMedlem sedan dec. 200012 465 inlägg
#2

Du använder ju RSTemp i din funktion också.

znyderMedlem sedan dec. 2002175 inlägg
#3

Gör det något? Förstår inte.

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Då RSTemp inte är dimmad i funktionen är det samma variabel som den du använder utanför funktionen.

znyderMedlem sedan dec. 2002175 inlägg
#5

ÅH!
Nu förstår jag.. känner man sig dum eller vad ;D
Tack LarsG!

GuffaMedlem sedan juni 2004533 inlägg
#6

Du borde titta lite närmare på SQL-kommandot JOIN. Att köra en massa databasfrågor i en loop på det där viset är rena döden för prestandan. Om du joinar in tabeller i den första frågan så kan du enkelt bli av med åstminstone hälften av frågorna i loopen, och därmed halvera tiden det tar att köra sidan.

Tänk också på att du måste stänga alla recordset du öppnar. Annars ligger de kvar i minnet och låser upp databaskopplingen.

Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb