Avatar billede sp Nybegynder
30. april 2001 - 23:41 Der er 20 kommentarer og
1 løsning

Problemer med tegnet \" i form-felter på preview

Hejsa,
Jeg har tidligere spurgt hvordan man skulle lave en preview-side til mit debatforum. Problemet er at man normalt bruger \" i textarea. hvis teksten indsættesi et skjult input-felt er jeg nødt til at skrive
<input type=\'hidden\' name=\'btext\' value=\'<% = Btext %>\'>

Jeg kan ikke bruge tegnet \", da den vil tro at sætningen vil stoppe ved et \".
D.v.s. man gå glip af resten af sætningen hvis man f.eks. skriver:

I debatforumet \"politik\", vil politik ikke konmme med.
Jeg har som sagt løst det med tegnet \', men så må man jo ikke bruge dette tegn i sine sætninger, for så gør den bare det samme.
At den tror at teksten slutter der. Det tegn bruger man normalt heller ikke så tit. Bruger man hverken \" eller \' til at omslutte value i indput-felter vises teksten udenfor.

Er der nogen anden løsning, så jeg hverken behøver at \"reservere\" tegnet \" eller \' ?

Håber I forstår hvad jeg mener
Avatar billede astalavista Nybegynder
30. april 2001 - 23:47 #1
\'kan man \"ikke\" gør sådan her\'

er ej sikker på hvad jeg snakeker om *GG*

/A
Avatar billede erikjacobsen Ekspert
30. april 2001 - 23:49 #2
<input type=\"hidden\" name=\"btext\" value=\"<%= server.htmlencode(Btext) %>\">

laver \" om til &quot; + lidt andre ting, men får det til at virke
Avatar billede stigc Nybegynder
01. maj 2001 - 00:02 #3
laver man \" om til 4 tegn kan det jo give problemer med for lange tekster i forhold til felterne i databasen. Jeg syntes bedst om at lave det om til et andet tegn. F.eks. ¤ ´ eller andre \"ubrugte\" tegn. Når det så skal vises skiftes dette tegn tilbage til \"-tegnet.
Avatar billede erikjacobsen Ekspert
01. maj 2001 - 00:05 #4
Nej, stigc. Det giver INGEN problemer. Når du får teksten på serveren på
den næste side, er det en smuk og fuldgyldig \" du får fat. Det er kun en kodning
for at vise den på HTML-siden (omend i et skjult felt her). Dem, der har lavet
HTML har rent faktisk tænkt sig om - i øvrigt er det 5 tegn :)
Avatar billede stigc Nybegynder
01. maj 2001 - 00:08 #5
så lærte jeg også noget idag. :)
Avatar billede stigc Nybegynder
01. maj 2001 - 00:14 #6
det er foresten også nærmere i SQL delen af ASP siden jeg bruger dette trick. Her går det jo ikke med en SQL sætning med \"-tegn i. Du har måske også et trick imod det?
Avatar billede stigc Nybegynder
01. maj 2001 - 00:16 #7
Det kan man vist bruge dobbelt \", altså \"\" ligesom i ASP strenge....
Avatar billede erikjacobsen Ekspert
01. maj 2001 - 00:18 #8
ja, det er nu mere \' det er galt med. Du kan f.eks. ikke

  insert into tabel (kolonne) values (\'Peter\'s store fødder\')

men du kan

  insert into tabel (kolonne) values (\'Peter\'\'s store fødder\')

Hvor den dobbelte \'-er bliver gemt som én i databasen. Det kan du opnå ved
altid (og jeg mener altid) at huske:

  felt = \"Peter\'s store fødder\"
  felt = replace(felt,\"\'\",\"\'\'\");
  sql = \"insert into tabel (kolonne) valies (\' & felt & \"\')\"


Avatar billede erikjacobsen Ekspert
01. maj 2001 - 00:18 #9
Bum bum

  sql = \"insert into tabel (kolonne) values (\'\" & felt & \"\')\"
Avatar billede stigc Nybegynder
01. maj 2001 - 00:21 #10
ja jeg byttede vist om. Men tak for oplysningerne...
Avatar billede nute Nybegynder
01. maj 2001 - 10:21 #11
det smarteste er jo uten tvil å HTMLEncode *før* du legger noe innhold i databasen. Dermed så slipper du for å utføre mer eller mindre merkelige operasjoner ved utlisting.

/nute
Avatar billede erikjacobsen Ekspert
01. maj 2001 - 10:32 #12
Det synes jeg ikke nute. Jeg mener man skal gemme det oprindelige format
i databasen, 1) det fylder mindst 2) Man kan lave andre konverteringer senere.

1) er nok ikke så vigtig, men har du et felt med char(20) kan der kun være ganske
få tegn, hvis de bliver konverteret, og du risikerer at skære en af, så der kun
står &quo - f.eks.

2) Det kan være du senere skal vise indholdet af databasen i et andet format,
og så er det lidt træls at skulle konvertere tilbage.

Men, ok, det er lidt ekstra arbejde på serversiden.
Avatar billede nute Nybegynder
01. maj 2001 - 10:46 #13
good point(s) :), men...

Man kan selvfølgelig benytte dette med litt fornuft. Når man oppretter et formular, så vet man som regel hvilke verdier man skal ha i feltene, og utfra det kan man velge om man skal legge HTMLEncodet innhold eller ikke i de tilhørende kolonner.

Med hensyn til:
1) Du har fullstendig korrekt, men dette kan jo f.eks løses ved å begrense mulighetene for inntasting, fra brukeren sin side, til å ta høyde for &quot;. Dette kan selvfølgelig i visse sammenhenger bety at man forkorter et felt med 10 tegn, hvilket er mye, men det er en mulighet.

2) Multipurpose databasemodellering skaper alltid mye debatt, og det blir alltid en spennende debatt. Det ultimate er selvfølgelig å lagre fulltekst i sine databaser sånn at evt. konvertering på et senere tidspunkt ikke er nødvendig.

Jeg er enig med deg e.j, men ville bare komme med noen (mer eller mindre gode) løsninger :)
Avatar billede erikjacobsen Ekspert
01. maj 2001 - 11:03 #14
Nu er det ikke kun \"-tegnet. F.eks. bliver navnet Åse Ærøbo til
&Aring;se &AElig;r&oslash;bo - det er ret ukontrollabelt :)
Avatar billede nute Nybegynder
01. maj 2001 - 11:05 #15
du har så rett... skal bare drikke min kopp kaffe og våkne før jeg kaster meg inn i disse diskusjonene :)
Avatar billede erikjacobsen Ekspert
01. maj 2001 - 11:07 #16
Åh hvad, nute, så længe diskussionen er sjov og udbytterig, så er du nu velkommen,
også uden morgenkaffe ;)
Avatar billede nute Nybegynder
01. maj 2001 - 11:10 #17
det var godt...takk ;) men uten morgenkaffe blir den som regel mer sjov, for da opplever mange (iallefall jeg) at man ikke husker noe av det man kan :)
Avatar billede sp Nybegynder
01. maj 2001 - 16:21 #18
Så kan man jo ligesågodt bare skrive &#34; eller &quot;

Men kan man bruge replace?
Btext = replace(Btext,\" \" \", \" &#34\")?
Avatar billede sp Nybegynder
01. maj 2001 - 16:23 #19
Jeg det her tegn \' kender jeg
Avatar billede sp Nybegynder
01. maj 2001 - 16:37 #20

Dette kan jo ikke lade sig gøre.

bText = Replace(Request.form(\"btext\"),\" \"\",\"&#34\")
Måske kan denne bruges?

bText = Replace(Request.form(\"btext\"),\" Chr(?)\",\"&#34\")


Avatar billede sp Nybegynder
01. maj 2001 - 16:47 #21
Det her virker!

bText = Replace(Request.form(\"btext\"),Chr(34),\"&#34;\")
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