Tänkte härmed starta en sammanhängande tråd där alla kan dela med sig av smarta ASP tips & tricks!
Har ni något som ni tror kan hjälpa andra, för bättre struktur, prestandad eller rent utav bättre ASP? Fallgropar vanliga misstag som man bör undvika och i så fall hur?
Allt e välkommet...
------------------
"Ni tre går och bildar en kvadrat" (Rolf Zetterlund under ett träningspass)
Ofta uppkommet problem är att if-satser inte fungerar på grund av olika subtyper. Här kommer de olika konverteringsfunktionerna:
CBool Function --> Boolean
CByte Function --> Byte
CCur Function --> Currency
CDate Function --> Date
CDbl Function --> Double
CInt Function --> Integer
CLng Function --> Long
CStr Function --> String
Red:
Ett användningsexempel:
If CInt(Request.Form("tal2")) > CInt(Request.Form("tal1")) Then
'#-- Skriv ut något kul --
Else
'#-- Skriv ut något tråkigt --
End If
mvh Jörgen :)
------------------
Varför bråka när man kan kramas?
Om man vill kolla om en sträng är tom så gör man det lämpligast med If Len(Trim(str & "")) Then.
Då funkar det även om strängen är "", Empty eller Null! :)
mitt bidrag till stacken, tillsätta värden på variblar på samma rad:
strMening = "detta var smart" : intTal = 2001
En ska till är att döpa sina variblar med ett prefix här är några ex.
bln = saker som bara kan vara sant eller falskt
Byt = hur många byte går det på en megabyte?
dat = Tid och datum
err = Error
dbl = ett sorts tal som tål en massa decimaler
int = heltal
lng = ännu ett tal
sng =ännu ett tal
obj = är ett object
str = är text
jag är ju inte så haj på lng, sng och dbl så om nån vill förklara skilnaden vore det ju bra :)
------------------
kolung.....det tål att tänkas på!
Ett annat tips. Gör Server.HTMLEncode, smily/forumkodsersättning m.m. när ni presenterar det som finns i databasen och inte när ni lägger in det.
Varför?
En anledning är om man har ett databasfält som får innehålla 50 bokstäver och man satt forumulärsfältet på maxlength="50" och användaren skriver den fullt och nåt tecken är <, >, åäö eller liknande. Då kommer strängen bli längre och det går inte att lägga in i databasen.
En annan anledning:
Ersätter man radbrytningar med <br> när man lägger in det. Om man då vill redigera det som lagts in så måste man när man skriver ut det i fältet ersätta åt andra hållet. Bättre då att bara göra det när man presenterar det.
Int har begränsning i längd. Long har mindre begränsning och kan därför vara bra att använda för Id:n och liknande för om man använder Int så blir det problem när räknaren i en tabell börjar komma upp i höga tal.
Int i VBScript är mer begränsad än Int i databasen. (I alla fall om man använder SQL Server)
ett bidrag till. För att skilja presentationsskiktet från allt övrigt skräp är det bra att återanvända så mycket kod som möjligt i subbar och funktioner. En sak man kan återanvända är databaskopplingar som går utmärkt att lägga i en funktion.
Dim objConn
Function GetDBConn()
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Mysql};Server=mysql.myserver.com;Database=db1; " & _
"UID=username;PWD=password"
Set GetDBConn = objConn
End Function
dim objDB
Set objDB = GetDBConn()
mvh Jörgen :)
------------------
Varför bråka när man kan kramas?
Tänkte spinna vidare lite på Erik Juhlins tips om att köra Server.HTMLEncode (om man nu vill det)när hämtar info från DBn. Har märkt problem med att kunna lista värden i bokstavsordning annars.
Varför? Om man kör Serv.HTMLencode innan man sätter in värden i databasen så ändras å,ä,ö, till respektives html-formatering vilket ger upphov till trubbel.
------------------
"Ni tre går och bildar en kvadrat" (Rolf Zetterlund under ett träningspass)
en annan bra sak är att ha ett generellt sätt att döpa sina filer på.
1.Dela upp olika moduler i kataloger.
2.Låt den vanligen första filen i katalogen som visas heta default.asp
3.Är det ett framset. Döp frameset file till framset.asp.
4.Editeringsfiler för att tex editera en nyhet heter edit.asp
Det här sättet gör att man får enkla namn, och snabbt får en överskådlig blick bland sina filer.
(skönt att slippa change_news_or_add_new_newsthingie_to_db.asp filnamn)
------------------ "Utan tvivel är man inte klok"
Tage Danielsson
Ett tips när man kör HTMLEncode.
Eftersom att man ofta kör HTMLEncode på saker som kommer ur databaser och eftersom att de sakerna kan vara null så kan det bli problem.
Då kan det vara lämpligt att ha en egen funktion som kör HTMLEncode.
Function HE(str)
If Len(Trim(str & "")) = 0 Then Exit Function
HE = Server.HTMLEncode(str)
End Function
Ett annat tips är att använda sig av en explict deklarering av variabler. Ha följande kod överst på ditt asp dokument:
<% Option Explicit %>
Denna kod säger till att alla variabler måste deklareras tillexempel med dim eller set. Varför? Det underlättar en hel del för att felsöka dina dokument.
Med explict deklarering kan det se ut så här:
<%
Option Explicit
Dim strNamn, iAge
strNamn = "Jan"
iAge = 12
%>
------------------
"Ni tre går och bildar en kvadrat" (Rolf Zetterlund under ett träningspass)
När ni ställer frågor till databasen, är följande ganska användbart:
"select field1, iif(len(field2)>10,left(field2,7) & '...',field2) from tabell"
Detta gör att du redan i svaret har kollat exempelvis längden och fixat till den om den kanske är för lång.
Bra, istället för att behöva köra left() i loopen sedan, med if-satser osv.