---
title: "Seg laddad gästbok. (Optimera kod)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/115267-seg-laddad-gästbok-optimera-kod"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Thompa__85"
published: "2004-11-06T23:40:01.000Z"
updated: "2004-11-08T13:48:13.000Z"
replies: 11
views: 477
page: 1
pages: 1
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/115267-seg-laddad-gästbok-optimera-kod"
---

# Seg laddad gästbok. (Optimera kod)

## #1 — Thompa__85, 2004-11-06T23:40Z

Hej! jag har en väldigt segladdad gästbok på min community! Det beror nog helt på slarvig kod och många inlägg i databasen som den måste kolla igenom!

Här har jag 2 sql satser som jag tror man skulle kunna baka ihop till enda, vad tror ni? Det skulle nog spara mycket tid!

```
1:
SQL = "SELECT intUserid, strUser, strFran, intFranid, strDatum, id, intPrivat, strInlagg, intSvar FROM gb WHERE intUserid=" & Request.Querystring("id") & " ORDER BY id desc LIMIT " & iStart & " ," & iPageSize & " "
Set RS = Connect.Execute(SQL)

2:
If cint(Request.Querystring("id")) = cint(Session("id")) then
SQL = "SELECT intLast, intUserid FROM gb WHERE intUserid=" & Request.Querystring("id") & " AND intLast=0"
Set RS4 = Connect.Execute(SQL)

If not RS4.eof then
Do until RS4.eof
	SQL = "UPDATE gb Set intLast = intLast + 1 WHERE intUserid=" & Request.Querystring("id") & ""
	Connect.Execute(SQL),,128
RS4.movenext
loop
response.redirect "gastbok.asp?id="&session("id")
End if
End if
```

Förstår ni hur jag menar?

Har ni frågor angående koderna så fråga på! Den första är iallafall tänkt att hämta alla inlägg, den andra är till för att lägga till en 1:a på alla inlägg som man inte läst tidigare!

Vore jätte snällt om ni kunde hjälpa mig att optimera denna kod så mycket det bara går!

Tack på förhand!

Mvh Adde

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

## #2 — Cmart, 2004-11-07T14:03Z

Jag skulle ta bort 2:an helt och lösa det på annat sätt. Är det bara för att kolla om det finns några nya inlägg sen man varit på sidan föra gången skulle jag köra en enkel koll med datum.

Varje gång en användare loggar in kan du uppdatera ett fält med inloggningsdatum och sedan jämföra detta med nytt på siten sedan förra besöket.

EX:
SQL = "SELECT \* FROM gb WHERE datum \> #" & lastlogin & "#"

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

## #3 — Thompa__85, 2004-11-08T11:32Z

> **Cmart skrev:**
>
> Jag skulle ta bort 2:an helt och lösa det på annat sätt. Är det bara för att kolla om det finns några nya inlägg sen man varit på sidan föra gången skulle jag köra en enkel koll med datum.
> 
> Varje gång en användare loggar in kan du uppdatera ett fält med inloggningsdatum och sedan jämföra detta med nytt på siten sedan förra besöket.
> 
> EX:
> SQL = "SELECT \* FROM gb WHERE datum \> #" & lastlogin & "#"

Hmm, man kan ju få gb medans man är inloggad oxå..

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

## #4 — Bosse168, 2004-11-08T11:41Z

Inte för att det går snabbare men man ska alltid förhindra SQL-injections för alla personer på webben är inte lika snälla som på webforum :)

```
'- Replace
Function secure(txt) 
txt = Replace(txt, "'", "''") 
secure = txt 
End Function 

1:
SQL = "SELECT intUserid, strUser, strFran, intFranid, strDatum, id, intPrivat, strInlagg, intSvar FROM gb WHERE intUserid=" & secure(Request.Querystring("id")) & " ORDER BY id desc LIMIT " & iStart & " ," & iPageSize & " "
Set RS = Connect.Execute(SQL)

2:
If cint(Request.Querystring("id")) = cint(Session("id")) then
SQL = "SELECT intLast, intUserid FROM gb WHERE intUserid=" & secure(Request.Querystring("id")) & " AND intLast=0"
Set RS4 = Connect.Execute(SQL)

If not RS4.eof then
Do until RS4.eof
	SQL = "UPDATE gb Set intLast = intLast + 1 WHERE intUserid=" & secure(Request.Querystring("id")) & ""
	Connect.Execute(SQL),,128
RS4.movenext
loop
response.redirect "gastbok.asp?id="&session("id")
End if
End if
```

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

## #5 — Thompa__85, 2004-11-08T13:08Z

> **Bosse168 skrev:**
>
> Inte för att det går snabbare men man ska alltid förhindra SQL-injections för alla personer på webben är inte lika snälla som på webforum :)
> 
>
>
> ```
> '- Replace
> Function secure(txt) 
> txt = Replace(txt, "'", "''") 
> secure = txt 
> End Function 
> 
> 
> 1:
> SQL = "SELECT intUserid, strUser, strFran, intFranid, strDatum, id, intPrivat, strInlagg, intSvar FROM gb WHERE intUserid=" & secure(Request.Querystring("id")) & " ORDER BY id desc LIMIT " & iStart & " ," & iPageSize & " "
> Set RS = Connect.Execute(SQL)
> 
> 2:
> If cint(Request.Querystring("id")) = cint(Session("id")) then
> SQL = "SELECT intLast, intUserid FROM gb WHERE intUserid=" & secure(Request.Querystring("id")) & " AND intLast=0"
> Set RS4 = Connect.Execute(SQL)
> 
> If not RS4.eof then
> Do until RS4.eof
> 	SQL = "UPDATE gb Set intLast = intLast + 1 WHERE intUserid=" & secure(Request.Querystring("id")) & ""
> 	Connect.Execute(SQL),,128
> RS4.movenext
> loop
> response.redirect "gastbok.asp?id="&session("id")
> End if
> End if
> ```

Tackar! Dock visste jag redan det ;) Men hade missat de där, så va bra att du tog upp det!

Men ingen som vet nått bra sätt att optimera min kod?

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

## #6 — @nders, 2004-11-08T13:19Z

Jag förstår inte varför du ställer två SQL-frågor med samma villkor? Lägg ihop till en fråga och kolla med if-sats på resultatet du får tillbaka.

Varför kör du en UPDATE i loopen? Det är ju dessutom samma UPDATE du kör. Jag förstår inte meningen med det.

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

## #7 — Thompa__85, 2004-11-08T13:36Z

> **@nders skrev:**
>
> Jag förstår inte varför du ställer två SQL-frågor med samma villkor? Lägg ihop till en fråga och kolla med if-sats på resultatet du får tillbaka.
> 
> Varför kör du en UPDATE i loopen? Det är ju dessutom samma UPDATE du kör. Jag förstår inte meningen med det.

Hej!

Den ska ju uppdatera alla inlägg man inte läst med en 1:a.. då måste jag ju ha den i loopen?

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

## #8 — Bosse168, 2004-11-08T13:39Z

Nej du ska inte ha den i loopen utan ändra bara värdet till 1.

```
SQL = "UPDATE gb Set intLast = 1 WHERE intUserid=" & secure(Request.Querystring("id")) & " AND intLast=0"
	Connect.Execute(SQL),,128
```

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

## #9 — Erik Juhlin, 2004-11-08T13:41Z

```
SQL = "UPDATE gb Set intLast = 1 WHERE intUserid=" & Request.Querystring("id") & " AND intLast=0"
Connect.Execute SQL,,128
```

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

## #10 — @nders, 2004-11-08T13:42Z

Då har du helt fel villkor i din UPDATE. Du anger ju bara användar-ID som villkor, och då kan jag inte förstå att du vill ha den i loopen.

Om jag har förstått saken rätt: lägg till *and intLast = 0* i din update, så uppdaterar den allt oläst till läst på den användarens gästbok. Denna ska du köra en gång. Du kan alltså skippa din loop.

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

## #11 — Erik Juhlin, 2004-11-08T13:42Z

Sen så skulle inte Bosses kod funka mot SQL injection. Använd CLng eller en validering som kollar att det är ett tal.

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

## #12 — Thompa__85, 2004-11-08T13:48Z

OKej, tack! Då kan jag alltså skippa loopen! Skönt!
Då behövs alltså bara första sql´n och min sql update?

Finns det något mer jag kan fixa?

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/115267-seg-laddad-gästbok-optimera-kod
