|
| Hvorfor mon? Fra : Gert Simonsen |
Dato : 24-04-04 08:52 |
|
Hejsa.
Jeg forstår ikke.....
Jeg har nedenstående kode, hvis jeg i "tekst" feltet skriver et "ping" f.eks
Gert's så vil den ikke sætte det ind i databasen.
Hvis jeg skriver uden ' så er der ingen problemer.
Jeg har desværre ingen fejlkode, da der blot bliver skrevet:
Siden kan ikke vises
Der er problemer med den side, du prøver at åbne, og den kan ikke
vises.
Er der nogen der kan hjælpe mig...?
Hilsen Gert Simonsen
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
server.MapPath("fpdb/bagterplogbog.mdb")
dato = now()
id= request.Form("brugerid")
SQLstmt = "INSERT INTO logbog (tekst,brugerid,dag,mnd,year,dato)"
SQLstmt = SQLstmt & " VALUES ('" & request.Form("tekst") & "','" &
request.Form("brugerid") & "'," & day(dato) & "," & month(dato) & "," &
year(dato) & ",#" & Date() & "#)"
'Response.Write SQLstmt
Conn.Execute (SQLstmt)
Response.Redirect "se_log1.asp?brugernavn="&id
%>
| |
finn elmgaard (24-04-2004)
| Kommentar Fra : finn elmgaard |
Dato : 24-04-04 10:00 |
|
----- Original Message -----
From: "Gert Simonsen" <gert@FJERNESmallin.dk>
> Jeg har nedenstående kode, hvis jeg i "tekst" feltet skriver et "ping"
f.eks
> Gert's så vil den ikke sætte det ind i databasen.
> Hvis jeg skriver uden ' så er der ingen problemer.
> Jeg har desværre ingen fejlkode, da der blot bliver skrevet:
> Siden kan ikke vises
> Der er problemer med den side, du prøver at åbne, og den kan ikke
> vises.
> Hilsen Gert Simonsen
>
> <%
> dato = now()
> id= request.Form("brugerid")
> SQLstmt = "INSERT INTO logbog (tekst,brugerid,dag,mnd,year,dato)"
> SQLstmt = SQLstmt & " VALUES ('" & request.Form("tekst") & "','" &
> request.Form("brugerid") & "'," & day(dato) & "," & month(dato) & "," &
> year(dato) & ",#" & Date() & "#)"
> 'Response.Write SQLstmt
> Conn.Execute (SQLstmt)
>
> Response.Redirect "se_log1.asp?brugernavn="&id
> %>
>
Hvis du benytter dig af muligheden for at udskrive din SQLstmt (du har jo
koden parat til det, den er blot ping'et ud) vil du se, at det går galt med
syntaksen p.g.a den ekstra ping.
Iøvrigt: Du lægger din request.Form("brugerid") over i variablen id, så brug
den i din SQLstmt, det giver en mere overskuelig kode. Tilsvarende kan du
gøre med request.Form("tekst"), specielt hvis du nu skal til at lave nogle
check for indtastede ping'er.
mvh
Finn
| |
Gert Simonsen (24-04-2004)
| Kommentar Fra : Gert Simonsen |
Dato : 24-04-04 10:29 |
|
> Hvis du benytter dig af muligheden for at udskrive din SQLstmt (du har jo
> koden parat til det, den er blot ping'et ud) vil du se, at det går galt
med
> syntaksen p.g.a den ekstra ping.
Yep - nemlig, men hvordan undgår jeg det, er det virkeligt rigtigt man ikke
kan skrive en tekst uden "ping"?
> Iøvrigt: Du lægger din request.Form("brugerid") over i variablen id, så
brug
> den i din SQLstmt, det giver en mere overskuelig kode. Tilsvarende kan du
> gøre med request.Form("tekst"), specielt hvis du nu skal til at lave nogle
> check for indtastede ping'er.
Ups - her går det galt.....med mit 3 dages grundlæggende ASP kursus,
forrstår jeg ikke rigtig hvad du mener.
Hilsen Gert Simonsen
| |
Jens B (24-04-2004)
| Kommentar Fra : Jens B |
Dato : 24-04-04 12:29 |
|
"Gert Simonsen" <gert@FJERNESmallin.dk> skrev i en meddelelse
news:408a3396$0$28862$ba624c82@nntp04.dk.telia.net...
> > Hvis du benytter dig af muligheden for at udskrive din SQLstmt (du har
jo
> > koden parat til det, den er blot ping'et ud) vil du se, at det går galt
> med
> > syntaksen p.g.a den ekstra ping.
> Yep - nemlig, men hvordan undgår jeg det, er det virkeligt rigtigt man
ikke
> kan skrive en tekst uden "ping"?
Ja det er rigtigt, at man ikke kan indsætte en tekst der indeholder ' .
Problemet er at ' jo også bruges i ASP kode, og derfor "forvirrer" det
koden.
Så du skal lave en replace, inden du får scriptet til at indsætte i
databasen.
F.eks. Replace(tekst,"'","´")
Eller eventuelt kan du replace med noget unikt, før du sætter ind i
databasen, da du således kan replace tilbage igen, når du hiver ud af
databasen.
F.eks. Replace(tekst,"'","[ping]")
I databasen vil der så komme til at stå gert[ping]s
Så når du trækker ud kan du lave en Replace(tekst,"[ping]","'")
Jens
| |
Gert Simonsen (24-04-2004)
| Kommentar Fra : Gert Simonsen |
Dato : 24-04-04 13:01 |
|
>
> Så du skal lave en replace, inden du får scriptet til at indsætte i
> databasen.
>
> F.eks. Replace(tekst,"'","´")
>
Yes.....det er noget jeg kan bruge (og forstår
Øhhh....så kommer 1000 kr. spørgsmålet, hvor hulen er det nu lige det skal
sættes ind.
Jeg syntes jeg har prøvet det hele.
Det er vel lige før: Conn.Execute (SQLstmt) det skal ind ik'?
Hilsen
Gert Simonsen
| |
Jens B (24-04-2004)
| Kommentar Fra : Jens B |
Dato : 24-04-04 13:16 |
|
"Gert Simonsen" <gert@FJERNESmallin.dk> skrev i en meddelelse
news:408a576e$0$28854$ba624c82@nntp04.dk.telia.net...
> >
> > Så du skal lave en replace, inden du får scriptet til at indsætte i
> > databasen.
> >
> > F.eks. Replace(tekst,"'","´")
> >
> Yes.....det er noget jeg kan bruge (og forstår
> Øhhh....så kommer 1000 kr. spørgsmålet, hvor hulen er det nu lige det skal
> sættes ind.
> Jeg syntes jeg har prøvet det hele.
> Det er vel lige før: Conn.Execute (SQLstmt) det skal ind ik'?
Først laver vi en variabel der hedder tekst. Og så bruger vi den variabel i
selve insert-scriptet (det bliver mere overskueligt)
dato = now()
id= request.Form("brugerid")
tekst = Replace(Request.Form("tekst"),"'","[ping]")
SQLstmt = "INSERT INTO logbog (tekst,brugerid,dag,mnd,year,dato)"
SQLstmt = SQLstmt & " VALUES ('" & tekst & "','" &
request.Form("brugerid") & "'," & day(dato) & "," & month(dato) & "," &
year(dato) & ",#" & Date() & "#)"
'Response.Write SQLstmt
Conn.Execute (SQLstmt)
Jens
| |
Gert Simonsen (24-04-2004)
| Kommentar Fra : Gert Simonsen |
Dato : 24-04-04 13:32 |
|
> Først laver vi en variabel der hedder tekst. Og så bruger vi den variabel
i
> selve insert-scriptet (det bliver mere overskueligt)
>
> dato = now()
> id= request.Form("brugerid")
> tekst = Replace(Request.Form("tekst"),"'","[ping]")
>
> SQLstmt = "INSERT INTO logbog (tekst,brugerid,dag,mnd,year,dato)"
> SQLstmt = SQLstmt & " VALUES ('" & tekst & "','" &
> request.Form("brugerid") & "'," & day(dato) & "," & month(dato) & "," &
> year(dato) & ",#" & Date() & "#)"
> 'Response.Write SQLstmt
> Conn.Execute (SQLstmt)
>
YES.......tusind tusind tak.
Åh ja, man skal jo lære hver dag.
Gert Simonsen
| |
Torben Brandt (24-04-2004)
| Kommentar Fra : Torben Brandt |
Dato : 24-04-04 16:13 |
|
Jens B skrev:
> Gert Simonsen skrev
>>
>>Yep - nemlig, men hvordan undgår jeg det, er det virkeligt rigtigt man
>>ikke kan skrive en tekst uden "ping"?
>
> Ja det er rigtigt, at man ikke kan indsætte en tekst der indeholder ' .
Nej, det er forkert.
Hvis man vil skrive en ' i en tekstværdi i en sql-streng, så skal man
bare skrive to af dem ('').
Eksempel:
INSERT INTO tabel (navn) VALUES ('McDonald''s')
Det vil kun blive indsat én i databasen.
Det svarer til at skrive " i en streng i ASP.
Eksempel:
Response.Write "Han sagde: ""Hej med dig"""
Det giver Han sagde: "Hej med dig"
mvh Torben
| |
Jens B (24-04-2004)
| Kommentar Fra : Jens B |
Dato : 24-04-04 23:20 |
|
"Torben Brandt" <name@domain.invalid> skrev i en meddelelse
news:c6e06l$4b9$2@sunsite.dk...
> Nej, det er forkert.
> Hvis man vil skrive en ' i en tekstværdi i en sql-streng, så skal man
> bare skrive to af dem ('').
Ah ok, det gør det jo lidt nemmere.
Jeg har tit set folk forklare den løsning, men folk har altid bare skrevet
replace ' med ''
Og jeg har så misforstået det, og troet at folk mente at man skulle replace
til gåseøjne ", og det har jeg altid syntes var en dårlig løsning, da det jo
så ville give gert"s og ikke gert's i databasen.
Men nu hvor du i tekst skriver "så skal man bare skrive to af dem", så kan
jeg se at jeg tidligere har misforstået folks forklaringer.
Jens
| |
|
|