Avatar billede nanna31 Praktikant
08. februar 2006 - 13:13 Der er 25 kommentarer og
1 løsning

HTMLEncode fungerer ikke

Jeg har et problem med specialtegn, som jeg har læst kan løses med HTMLEncode, men den virker ikke i følgende kode, som ellers fungerer fint?

Dim varFornavn, varEfternavn, varTelefon, varFoedselsdato

varFornavn =        Request.Form    ("fornavn"    )
varEfternavn =        Request.Form    ("efternavn"    )
varTelefon =        Request.Form    ("telefon"    )
varFoedselsdato =    Request.Form    ("foedselsdato"    )

varFornavn = Server.HTMLEncode("varFornavn");

SQL = "Insert into personer ("

SQL = SQL & "Fornavn,"
SQL = SQL & "Efternavn,"
SQL = SQL & "Telefon,"
SQL = SQL & "Foedselsdato)"

SQL = SQL & "values("

SQL = SQL & "'" & varFornavn & "',"
SQL = SQL & "'" & varEfternavn & "',"
SQL = SQL & "'" & varTelefon & "',"
SQL = SQL & "'" & varFoedselsdato & "')"

CONN.Execute(SQL)
Avatar billede fennec Nybegynder
08. februar 2006 - 13:18 #1
Det burde kun være nødvendigt at sikre ' tegnet:

varFornavn = replace(Request.Form("varFornavn"),"'","''")

men ellers mangler du Request.Form:
varFornavn = Server.HTMLEncode(Request.Form("varFornavn"))
Avatar billede nanna31 Praktikant
08. februar 2006 - 13:39 #2
Du siger "Det burde kun være nødvendigt at sikre ' tegnet:" - hvad mener du?

Du mener vel "Request.Form("fornavn"))" i stedet for "Request.Form("varFornavn"))" ?

Kan det passe, at der kommer til at stå "Ælling" i databasen, når fornavnet er "Ælling" ?

Hvorfor skal Request.Form med - burde mit forslag ikke  virke?
Avatar billede ldanielsen Nybegynder
08. februar 2006 - 13:41 #3
fennec > du roder vist lidt i det ...

nanna31, du skal ikke have "" omkring varFornavn i denne linie:
varFornavn = Server.HTMLEncode("varFornavn");

Request.Form ("fornavn") hældes jo over i en lokal variabel der hedder varFornavn. Men den kode du har nu komme alle personer til at hedde "varFornavn" til fornavn :o)

Men fennec har ret, du burde kun skulle bekymre dig om ' tegnet. Hvad er der for problemer du skal have løst med HTMLEncode?
Avatar billede ldanielsen Nybegynder
08. februar 2006 - 13:45 #4
Der burde stå Ælling ...
Avatar billede ldanielsen Nybegynder
08. februar 2006 - 13:50 #5
Hvis du har en person der hedder O'Leary, så vil du ende med at din SQL siger noget med

"INSERT INTO personer (fornavn) VALUES ('O'Leary')"

... hvilket giver en fejl, for nu er der jo 3 stk ' i sætningen. Hvis du derfor erstatter en ' med to ' inden, vil det give:

"INSERT INTO personer (fornavn) VALUES ('O''Leary')"

... hvilket er korrekt, for databasen opfatter dobbelt anførselstegn som et enkelt. Fikst, ikke?

Men tilbage til mit spørgsmål: Hvorfor kan du ikke putte danske bogstaver m.m. i databasen? Det gør alle vi andre altså!!
Avatar billede nanna31 Praktikant
08. februar 2006 - 13:51 #6
Det med "" kan jeg godt forstå, jeg prøvede også først mit ovenstående eksempel uden "", men det virkede heller ikke.

Mine problemer opstår i forbindelse med adresser, hvor flg. tegn kan være en del af  inputtet: "./,/æ/ø/å/Æ/Ø/Å/ /-/"
Avatar billede fennec Nybegynder
08. februar 2006 - 13:56 #7
nanna31 >>
Får du en fejl når du bruger en af de tegn, for jeg kan sagtens bruge de tegn i alle de databaser jeg har brugt (access, ms-sql og mysql)
Avatar billede nanna31 Praktikant
08. februar 2006 - 13:56 #8
Når jeg opretter en person med fornavnet Ælling, kommer fornavnet til at stå som Ælling i databasen?
Avatar billede nanna31 Praktikant
08. februar 2006 - 13:57 #9
Og efterfølgende gives intet resultat, når jeg søger på fornavnet Ælling
Avatar billede fennec Nybegynder
08. februar 2006 - 14:03 #10
Kunne lyde som om den kører på en forkert collate. Hvilken database er det??
Avatar billede nanna31 Praktikant
08. februar 2006 - 14:11 #11
access 2002
Avatar billede nanna31 Praktikant
08. februar 2006 - 14:12 #12
Det har vel ikke noget at gøre med, at mit input til Request.Form kommer fra et Flash-inputfelt?
Avatar billede nanna31 Praktikant
08. februar 2006 - 14:13 #13
Jeg kan sagtens skrive æøå manuelt ind i databasen.
Avatar billede nanna31 Praktikant
08. februar 2006 - 14:14 #14
Men det giver nu heller intet resultat, når jeg søger på det
Avatar billede larsbachmanndk Nybegynder
08. februar 2006 - 14:19 #15
Jeg havde et lignede problem engang med ÆØÅ i access databasen, og det kunne jeg løse ved at tilføje: <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> i toppen af mine ASP dokumenter
Avatar billede nanna31 Praktikant
08. februar 2006 - 14:23 #16
larsbach - det gør desværre ingen forskel her hos mig.
Avatar billede morhan Novice
08. februar 2006 - 14:26 #17
lidt mere om codepage http://www.microsoft.com/windows2000/en/server/iis/default.asp?url=/windows2000/en/server/iis/htm/asp/eadg6e7n.htm

du skal sørge for, at det charset som benyttes på klientsiden matcher det charset som asp forsøger at dekode strengene med
Avatar billede nanna31 Praktikant
08. februar 2006 - 14:31 #18
Ok, nu forsåtr jeg konceptet codepage, men jeg ved ikke, hvilken codepage, jeg så skal vælge, samt hvordan jeg vælger den samme i mit Flashdokument, hvilket jo nok er nødvendigt så?
Avatar billede fennec Nybegynder
08. februar 2006 - 14:35 #19
Det kunne meget vel have noget med dit Flash at gøre. Jeg vil anbefale at lave en lille test (glem alt om CODEPAGE og lign i testen)

Lav en almindelig HTML form.
Få den til at gemme i databasen.
Hvis den gemme rigtigt, er det MEGET sansynlig at det er Flash der er problemet.
Avatar billede ldanielsen Nybegynder
08. februar 2006 - 14:36 #20
Du kan også vælge at bruge ADO på en anden måde:

'Opret Connection Command (Com) og Recordset (Rec)

Com.CommandText = "SELECT top 1 Fornavn, Efternavn, Telefon, Foedselsdato FROM personer"
Rec.Open Com, , 3, 3
Rec.AddNew
Rec("Fornavn") = Request.Form("fornavn")
Rec("Efternavn") = Request.Form("Efternavn")
Rec("Telefon") = Request.Form("Telefon")
Rec("Foedselsdato") = CDate(Request.Form("Foedselsdato"))
Rec.Update
Rec.Close

'og luk og set objekterne til Nothing

Det løser også en del problemer omkring datoer ...
Avatar billede nanna31 Praktikant
08. februar 2006 - 14:46 #21
Har fundet løsningen - jeg skulle simpelthen bare skrive "System.useCodepage = true;" i rooten i mit Flashdokument :-)

Mange tak for hjælpen, det havde jeg aldrig fundet ud af, hvis ikke nogen havde tænkt på "codePage"

Husk at lægge svar!
Avatar billede nanna31 Praktikant
19. februar 2006 - 15:43 #22
Tak for hjælpen, vil en lige lægge et svar, så jeg kan lukket spørgsmålet?
Avatar billede larsbachmanndk Nybegynder
19. februar 2006 - 19:58 #23
Hvem syntes du skal ligge et svar?
Avatar billede nanna31 Praktikant
19. februar 2006 - 22:01 #24
Det synes jeg, at du skal Lars - du ledte mig på Codepage.
Avatar billede larsbachmanndk Nybegynder
20. februar 2006 - 08:08 #25
Så siger jeg mange tak :)
Avatar billede nanna31 Praktikant
20. februar 2006 - 20:11 #26
lige over :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester