/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
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



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste