Avatar billede vraa Nybegynder
16. april 2003 - 10:19 Der er 15 kommentarer og
1 løsning

Replace() problem

Jeg har lavet et cms modul, hvor det er opstået et lille problem med replace() funktionen. Når jeg lægger noget fra et textarea ned i en database indeholde tegnet ', replacer jeg det med ‘ og omvendt når jeg skal have det tilbage i mit textarea. Her virker det fint, men når jeg skal benytte replace i en tekstboks, samme måde som før, bliver det stykke tekst der er efter ', fjernet.
F.eks.:
beskrivelse = replace(rs("dage"), "‘", "'")

Her er rs("dage") = "Mandag - onsdag"

Hvis jeg her smider et ' ind et tilfældig sted F.eks.

Mandag - on'sdag

bliver det til:
"Mandag - on"
i teksboksen, men der bliver godt nok smidt en ‘ ned i DB, med "sdag" bagefter.

Problemet er at når jeg trækker ‘ op fra DB skal den laves om til ' i tekstboksen.

Lang, men forhåbentlig præcis forklaring.
Avatar billede medions Nybegynder
16. april 2003 - 10:21 #1
-Det er fordi du ikke skal replace det med &lsquo, men med 2 ' i stedet for!

altså

Replace(rs("date"), "'", "''")

//>Rune
Avatar billede medions Nybegynder
16. april 2003 - 10:21 #2
Når du får det tilbage fra databasen, er ses der kun en enkelt!

//>Rune
Avatar billede vraa Nybegynder
16. april 2003 - 10:41 #3
Jeg lægger det i DB sådan her:
replace(rs("dage"), "'", "''")

og trækker det derfra sådan her
replace(rs("dage"), ''", "'")

i både textarea og teksboks, men har stadig samme problem. Det bliver lagt rigtig nok ned i DB, men når det skal trækkes ud i tekstboksen forsvinder al teksten efter '.
Avatar billede vraa Nybegynder
16. april 2003 - 10:46 #4
Det samme sker også hvis jeg trækker fra DB uden at benytte replace()
Avatar billede erikjacobsen Ekspert
16. april 2003 - 10:46 #5
Det er nok fordi du glemmer noget i din HTML - vis os den.

Ændrer du én ' til to ''-ere når du putter i DB-en skal du INTET gøre
når du trække den ud igen.
Avatar billede vraa Nybegynder
16. april 2003 - 10:53 #6
Dage bliver lagt i DB således:
dage_opdater = replace(request.QueryString("dage_aabningstider" & rs("id")), "'", "''")

---og jeg henter min data fra DB således:

        Do while not rs.eof
    beskrivelse = replace(rs("beskrivelse"), "''", "'")
    beskrivelse = replace(beskrivelse, "<br>", vbcrlf)
        response.Write("</td><td width='152'></td><td width='71'></td></tr><tr><td>Beskrivelse</td><td>Dage</td><td></td></tr>")
        response.Write("<tr valign='top'><td rowspan=2><textarea name='beskrivelse_aabningstider" & rs("id") & "' rows='4' cols='30'>" & beskrivelse & "</textarea>")
        response.Write("</td><td><input type='text' size=20 name='dage_aabningstider" & rs("id") & "' value='" & rs("dage") & "'></td><td><input type='button' name='slet' value='Slet' onclick=location='aabningstider.asp?slet_aabningstid=ok&id=" & rs("id") & "&slet=nej'></td></tr>")
        response.Write("<tr><td valign='bottom'>Tidsrum<br><input size=20 name='tidsrum_aabningstider" & rs("id") & "' type='text' ")
        response.Write("value='" & rs("tidsrum") & "' size='8'></td><td></td><td></td></tr>")
        response.Write("<tr><td colspan='3'><hr></td></tr>")
    rs.movenext
        loop

Vi snakker kun om "dage".
Avatar billede vraa Nybegynder
16. april 2003 - 10:54 #7
Det var ikke meningen med de point.... sorry. Lægger 30 oveni igen!!
Avatar billede vraa Nybegynder
16. april 2003 - 11:35 #8
Har fundet ud af det. Dit svar var rigtig nok medions, så pointene er givet rigtig nok ud. Tak for hjælpen!!
Avatar billede erikjacobsen Ekspert
16. april 2003 - 11:37 #9
Fik du også løst "...ud i tekstboksen forsvinder al teksten efter '." ?
Avatar billede vraa Nybegynder
16. april 2003 - 12:21 #10
jep jep. Havde ' omkring min value på tekstboksen. Det skulle man åbenbart ikke.
Avatar billede erikjacobsen Ekspert
16. april 2003 - 12:23 #11
Nemlig. Man skal have "...." omkring, og så skal man også

<.... value="<%= server.htmlencode(dinvariabel)%>"....>

ellers får du problemer med "-ere - prøv selv.
Avatar billede vraa Nybegynder
16. april 2003 - 13:35 #12
Det forstår jeg ikke helt. Synes ikke at jeg får de problemer. Mener du at man får problemer hvis man f.eks. laver "mandag til onsdag" om til "mandag - onsdag" eller...??
Avatar billede erikjacobsen Ekspert
16. april 2003 - 13:46 #13
Nej. Skriv en dobbeltstrof i dine felter og se hvad der sker.

  Katrine sagde: "Nu skal jeg altså smutte!"
Avatar billede vraa Nybegynder
16. april 2003 - 13:55 #14
ok.... men når du får tid igen så forsvinder teksten altså igen efter '. Også med server.htmlencode på.
Koden ser således ud nu:

    Do while not rs.eof
    beskrivelse = replace(rs("beskrivelse"), "<br>", vbcrlf)
        response.Write("</td><td width='152'></td><td width='71'></td></tr><tr><td>Beskrivelse</td><td>Dage</td><td></td></tr>")
        response.Write("<tr valign='top'><td rowspan=2><textarea name='beskrivelse_aabningstider" & rs("id") & "' rows='4' cols='30'>" & beskrivelse & "</textarea>")
        response.Write("</td><td><input type='text' size=20 name='dage_aabningstider" & rs("id") & "' value='" & server.HTMLEncode(rs("dage")) & "'></td><td><input type='button' name='slet' value='Slet' onclick=location='aabningstider.asp?slet_aabningstid=ok&id=" & rs("id") & "&slet=nej'></td></tr>")
        response.Write("<tr><td valign='bottom'>Tidsrum<br><input type='text' size=8 name='dage_tidsrum" & rs("id") & "' value='" & rs("tidsrum") & "'>")
        response.Write("</td><td></td><td></td></tr><tr><td colspan='3'><hr></td></tr>")
    rs.movenext
    loop
Avatar billede vraa Nybegynder
16. april 2003 - 13:56 #15
Der er selvfølgelig 30point mere og hente her!
Avatar billede erikjacobsen Ekspert
16. april 2003 - 14:03 #16
Jeg troede vi var enige om at bruge "...":

... value=""" & server.HTMLEncode(rs("dage")) & """> ...
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