Sen så bör man som jag sagt tidigare inte köra Server.HTMLEncode på något när man lägger in det i databasen.
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
92 svar · 9 823 visningar · startad av iceM2 · sida 3 av 5
Sen så bör man som jag sagt tidigare inte köra Server.HTMLEncode på något när man lägger in det i databasen.
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
tänkte visa hur man infogar radbrytning efter x antal tecken...
<%
Fubction br(str)
Dim antal, tecken, count
antal = 15 'antal tecken som raden skall vara.
for tecken = 1 to len(str)
count = count + 1
Response.Write Mid(str, tecken, 1)
If count > antal Then Response.Write "<BR>": count = 0
next
End Function
text = "på nästa rad visas hur du skriver ut en text med denna funktion."
Response.write br(text) 'text är en variabel som innehåller den text som visas ovanför.
%>
fråga till Erik Juhlin(och er andra) du säger att man inte ska köra Server.HTMLEncode när man stoppar in i db utan när man tar ut? men tecken som | och '. Jag har hört att access inte gillar dem? måste man inte göra om dem innan då? eller?
Man ska i alla fall inte förlita sig på Server.HTMLEncode eftersom att det inte påverkar | och '. ;)
Pipetecken vet jag inte om de kan strula till det, men när man lägger in strängar med UPDATE eller INSERT eller jämför strängar så bör man ha en funktion som ersätter ' med ''.
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
OK, ett litet tips.
Ni vet ju att "alla" användare inte kan tex fylla i sina namn ordentligt utan det ser ut tex som detta:
patrik berggren
lars-göran anderson
fast det borde se ut så hära:
Patrik Berggren
Lars-Göran Anderson
Då e denna lilla funktion smidig att ha:
'## -- make first letter in every word and first letter after - in uppercase --
Public Function ProperCase(ByVal vValue)
Dim varTemp, vValue_tmp
Dim lngLength
Dim N
Dim blnProper
blnProper = True
lngLength = Len(vValue)
For N = 1 To lngLength
varTemp = Mid(vValue,N,1)
If blnProper = True Then
varTemp = UCase(varTemp)
blnProper = False
End If
vValue_tmp = vValue_tmp & varTemp
If varTemp = " " or varTemp = "-" Then
blnProper = True
End If
Next
'## -- return value in proper case --
ProperCase = vValue_tmp
End Function
cya,
PatrikB
------------------
'## -- second place is the first looser -- ##'
Ett användbart tips då IIS vägrar uppdatera sidan:
Response.AddHeader "Pragma", "no-cache"
Response.AddHeader "cache-control", "no-store"
------------------
Mostly Harmless
Lite tips från mig! :)
Struktur - Lägg ASP kod i subbar och funktioner för att lättare skilja HTML kod mot ASP. HTML-koden blir otroligt överskådlig och lätt att ändra i efterhand när man inte "grötar" ihop allt med varandra. Exempel:
<%
Function getNews()
' Hämtar nyheterna.
End Function
Sub displayNews()
' Visar nyheterna.
End Sub
arrNyheter = getNews() ' Hämtar nyheter
If isArray(arrNyheter) Then
strHeadTitle = "Dagens nyheter"
Else
strHeadTitle = "Inga nyheter idag"
End If
%>
<HTML>
<HEAD><TITLE><%= strHeadTitle %></TITLE></HEAD>
<BODY>
<% Call displayNews() %>
</BODY>
</HTML>
Hämta från fält ur databas - Det bör inte göras med SELECT * FROM tabell. Ange istället alla fälten som ska hämtas (även om det är alla!). På så vis kan du lägga till/ta bort fält i databasen enkelt, utan att du behöver ändra om ordningen på hämtningen av recordseten.
Hämta datan först på sidan - Själv hämtar jag all data innan själva HTML-sidan skrivs ut. På så vis kan jag lägga ett meddelande i <TITLE>-taggen eller var jag vill. Använd ovanstående modell för det (Struktur).
Använd Getrows - Öppna databaskopplingen snabbt, hämta med .getrows, stäng direkt efter! Sedan använder man Struktur-modellen ovan för att presentera datan.
------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."
[Redigerat av Pace den 21 dec 2001]
Skriv klasser och inte bara lösa subbar och funktioner.
När det gäller request("variabel") så bör man inte använda det. Det kan tydligen ställ till problem IIS:en.
Det bästa sättet om man har både GET och POST requests till sidan är följande:
Dim rm, variabel
rm = Request.ServerVariables("REQUEST_METHOD")
If rm = "POST" then
variabel = request.Form("variabel")
ElseIf rm = "GET" then
variabel = Request.QueryString("variabel")
End if
Använd alltid samm variabelnamn i ASP koden som i request variablerna.
Använd inte sessions variabler om du inte absolut måste.
Använd alltid Option Explicit.
Använd aldrig "On error resume next" under kodning. Och om du använder det vid skarpkörning, se till att du får ett mail med felmeddelanden eller loggar alla fel som uppstår.
Stäng databaskopplingar så fort du stoppat in datan i ditt recordset.
Sätt alla objekt till nothing och stäng alla öppna kopplingar när du är klar med dom.
Dimma alla variabler.
Kommentera koden. =)
//Micke
Fortsätter på Pace tråd. För att få en ännu bättre struktur, använd Com-objekt!
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
En guldgruva med en massa tips http://www.asp101.com/tips/index.asp
------------------
"Ni tre går och bildar en kvadrat" (Rolf Zetterlund under ett träningspass)
just de
Erik Juhlins inlägg om att kolla om en sträng är tom...
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!
Använder samma If sträng, men kollar om ett recordset är tomt, detta fungerar endast om jag använder 'Empty', ej Null, eller 0
If Len(Trim(RecSet("streng" & "")),Empty Then
?? Hur kommer det sig? Beror det på serverkomponenter och olikheter, eller?
//alltid p*
[Redigerat av peppar den 29 dec 2001]
RecSet("streng" & "")
bör nog vara:
RecSet("streng") & ""
du ska ju bygga på en "tom-sträng" på recset posten och inte på recset postens namn
cya,
PatrikB
------------------
-=* IF there is a wrong way to do something, then someone will do it *=-
Ett litet tips när ni sska bygga upp databasstrukturen, döp tabellerna med ett prefix t_ (t_medlemmar) och fälten med f_ (f_login).
På det sättet slipper ni vara rädda för att namnet på fältet är namnskyddat i nån dialekt av SQL.
god fortsättning :)
------------------
kolung.....det tål att tänkas på!
En kul grejj att testa med tanke på tipset om vilka sätt man kan använda för Response.Write.
Kör denna kod och kolla hastigheten mellan de olika sätten:
<%
dInitTime = Timer
'--## Metod 1
For n = 1 To 500000
%>.<%
Next
fPeriod = FormatNumber(Timer - dInitTime, 3, True)
Response.Write "<br>Metod 1 gav tiden: "& fPeriod &"<br><br>"
dInitTime = Timer
'--## Metod 2
For n = 1 To 500000
Response.Write "."
Next
fPeriod = FormatNumber(Timer - dInitTime, 3, True)
Response.Write "<br>Metod 2 gav tiden: "& fPeriod &"<br><br>"
dInitTime = Timer
'--## Metod 3
With Response
For n = 1 To 500000
.Write "."
Next
End With
fPeriod = FormatNumber(Timer - dInitTime, 3, True)
Response.Write "<br>Metod 3 gav tiden: "& fPeriod &"<br><br>"
%>
------------------
//Palle
www.palleman.nu
[Redigerat av Palleman den 03 jan 2002]
Det här senaste tycker jag är mycket intressant. Alla jag pratat med och alla böcker jag läst säger att det är bättre att använda response.write än att ha massa %> <% Detta är alltså helt fel?
Och att använda with verkar inte vara någon hit. Det kanske går snabbare att skriva koden men sidan blev ju väldigt slö :o
------------------
//M@rtin || Peachy.nu\\
ni taLar Bra laTiN
Det här senaste tycker jag är mycket intressant. Alla jag pratat med och alla böcker jag läst säger att det är bättre att använda response.write än att ha massa %> <% Detta är alltså helt fel?
Nej. Om du kör 20 000 stycken content-switchar så är det mycket slöare än 20 000 Response.Write. Testet ovan är knappast någon vanlig metod av hantering av utdata.
Och att använda with verkar inte vara någon hit. Det kanske går snabbare att skriva koden men sidan blev ju väldigt slö
Jo, with är snabbare eftersom man bara kallar på Response en gång, och därefter enbart metoden Write.
------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."