webForumDet fria alternativet

Förbättra koden?

ASP

3 svar · 258 visningar · startad av Bosse168

Medlem sedan nov. 20031 018 inlägg
Frågan#1

Någon som vet hur man kan förbättra denna kod?
Jag har precis uppgraderat databasen till MySQL 4.0.16

<%@ LANGUAGE="VBSCRIPT" %>
<% Response.Expires=-1
Response.Buffer = True

If Session("login") <> "ok" Then
	Session("meddelande") = "Du måste vara inloggad för att kunna surfa runt här!!."
	Response.Redirect "http://skene.nu"
End If

%>
<!-- #INCLUDE VIRTUAL="/include/koppling.asp" -->

<%
Set Rs = Connect.Execute("SELECT vems FROM plejs_fraga WHERE vems ='"& session("username") &"'")

If Rs.EOF Then

Dim fraga,svar1,svar2
fraga=Request.Form("fraga")
svar1=Request.Form("svar1")
svar2=Request.Form("svar2")

If fraga="" Then
fraga="Ska jag skaffa en fråga?"
ElseIf svar1="" Then
svar1="Ja"
Else
svar2="Nej"
End If

Connect.Execute("INSERT INTO plejs_fraga (vems,Fraga,datum,svar1,svar2) VALUES('"& session("username") &"','"& Replace(fraga,"'","''") &"','" & Now() & "','"& Replace(svar1,"'","''") &"','"& Replace(svar2,"'","''") &"') LIMIT 1")  

Else

Connect.Execute ("update fraga set Fraga='"& Replace(fraga,"'","''") &"', datum='" & Now() & "', svar1='"& Replace(svar1,"'","''") &"', svar2='"& Replace(svar2,"'","''") &"' where vems='" & session("username") & "' LIMIT 1")	

End If

Connect.Close : Set Connect = Nothing
Rs.Close : Set Rs=Nothing

Session("meddelande") = "  Din omröstning är skapad!"
Response.Redirect "../plejs.asp?se="& session("username") &""
%>
Medlem sedan aug. 20012 349 inlägg
#2

En liten liten förbättring, men knappast vettig egetnligen är att istället för att slå upp Session("username") varje gång du behöver det så skapar du en konstant och lägger in värdet i. Då slipper kompilatorn leta igenom session objektet varje gång.

Det gäller rent generellt för allting av den typen, Request.form mm, att lägga över det i konstanter snabbar upp det om man använder samma sak flera gånger och värdet inte behöver ändras.

Medlem sedan sep. 20026 425 inlägg
#3

Onödig användning av sessionen "meddelande". Bättre att i så fall skicka besökaren vidare till "../plejs.asp?se="& session("username") &"&show=poll-ok". Då kan du på plejs.asp ha denna kod:

If Request.Querystring("show")="poll-ok" Then
Response.Write "Din omröstning är skapad!"
End If

Vidare så kan du i stället för (som du gör nu) köra en Replace på dåliga tecken när du sätter in data i databasen, ha en funktion för det i stället.

function fix_(str)
str = Replace(str,"'","''")
fix_ = str
end function

I stället för Replace(fraga,"'","''") så skriver du då fix_(fraga) och tillämpar detta på alla dina variabler som ska in i databasen. :)
Annars tycker jag allt ser bra ut, förutom att du inte har Option Explicit med, som tvingar dig att deklarera dina variabler. Är bra ur bland annat felsökningssynpunkt och inte minst ur prestandasynpunkt. Läs mer om detta i denna tråden.

Hoppas jag inte missat nåt mer nu. :D

Medlem sedan aug. 20012 349 inlägg
#4

Ur prestanda synpunkt är det ju inte effektivare att skriva en extra wrapper för att fixa replace av tecken. Bättre då att använda Replace varje gång, om man är ute efter prestanda.

Jag anser däremot att det är ett bra sätt för att skapa bättre läsbarehet i koden.

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)