Avatar billede thecoder.dk Nybegynder
10. oktober 2003 - 16:26 Der er 24 kommentarer

Newline kode?

hej

Jeg har et textarea hvor det er meningen brugeren skal skrive noget tekst... denne tekst skal så gemmes i en mysql db og derefter hentes ud når andre vil se denne tekst... teksten bliver her skrivet i en table...

problemet er at når den gemmer teksten i databasen forsvinder alle linjeskift og når jeg så henter den tilbage via. php står det bare ud i en pløre...

skal jeg bruge str_replace før jeg gemmer teksten i databasen og i såfald med hvilke parametre...

mvh

Johan Rathje
Avatar billede Slettet bruger
10. oktober 2003 - 16:27 #1
nope...PHP smider automatisk linieskift i databasen, når du så hiver teksten ud skal du bruge nl2br()

altså echo nl2br($dinvar);
Avatar billede ldrada Nybegynder
10. oktober 2003 - 16:27 #2
kigger med.
Avatar billede thecoder.dk Nybegynder
10. oktober 2003 - 16:30 #3
ok takker undersøger lige om det virker
Avatar billede ldrada Nybegynder
10. oktober 2003 - 16:32 #4
thecoder > kan du ikke lige fortælle mig din ICQ/MSN jeg har lige noget jeg vil spørge dig om (ikke om dette spm).
Avatar billede exp Juniormester
10. oktober 2003 - 16:32 #5
Avatar billede thecoder.dk Nybegynder
10. oktober 2003 - 16:33 #6
takker det funker perfekt
Avatar billede ldrada Nybegynder
10. oktober 2003 - 16:33 #7
thecoder > mine er danielldr@hotmail.com/118539870
Avatar billede fangel Nybegynder
10. oktober 2003 - 16:34 #8
og for at vise det...

et liniskift er en af følgende kombinationer:

\n <- hvis Linux, Unix
\n\r <- hvis windows
\r <- hvis apple

dvs at nl2br() 'oversætter' disse tegn til HTML liniskift <br>...

Morten
Avatar billede thecoder.dk Nybegynder
10. oktober 2003 - 16:40 #9
hvorfor er det lige at jeg ikke kan lukke spørgsmålet igen?
Avatar billede fangel Nybegynder
10. oktober 2003 - 16:42 #10
fordi ingen har lagt et svar - bed de personer du synes skal have point om at lægge et svar - så kan du acceptere disse

Morten
Avatar billede thecoder.dk Nybegynder
10. oktober 2003 - 16:42 #11
ah hehe havde jeg ikke lige set... el_barto smid et svar
Avatar billede fangel Nybegynder
10. oktober 2003 - 16:45 #12
desuden kan jeg andbefale at lave nl2br() _før_ databasen... på den måde skal den kun laves en gang!
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 17:08 #13
Uenig, dea_pg. Hvis teksten absolut kun skal vises som HTML, så ja, måske.
Men skal den efterfølgende redigeres skal de jo fjernes igen, fordi ved

<textarea>
a
b
c
d<br>
e
f
</textarea>

så vises <br> i kassen. Det bedste råd er normalt at gemme så tæt på
originalformatet som muligt.
Avatar billede Slettet bruger
10. oktober 2003 - 17:09 #14
Ellers tak. Ingen point til mig.

Og nl2br før man smider det i databasen er en rigtig dårlig ide af mange grunde:

1. Parser man indholdet for at lave HTML om til uskadelig kode ryger <br> tags med
2. Skal du skrive ud i et tekstfelt i en form kommer <br> med i feltet..som <br> tags.

Så: Lav dine nl2br når du udskriver, og hvem har ikke de 2 sekunder det tager at skrive, i stedet for at bruge timer på at fejlfinde senere når det fucker op ;)
Avatar billede fangel Nybegynder
10. oktober 2003 - 17:23 #15
barto -> jeg skriver bare altid mine scripts så de kører hurtigst muligt til at vise data - når der skal ændres kan det tage det længere tid at strippe dem igen

Morten
Avatar billede Slettet bruger
10. oktober 2003 - 17:27 #16
Ja uha, det kan tage flere milisekunder ;)
Avatar billede Slettet bruger
10. oktober 2003 - 17:28 #17
Har du så tænkt på at 10 x <br> nok optager flere bytes end 10 x \n gør?

;)
Avatar billede fangel Nybegynder
10. oktober 2003 - 17:32 #18
barto -> nå ja - jeg har det med at gå op i småting... (MySQL er også gearet til at vise data - så det går nok med de 3x data som <br> optager i forhold til \n)

Morten
Avatar billede Slettet bruger
10. oktober 2003 - 17:38 #19
Og PHP er gearet til at parse...

Det koster jo også tid når man lægger indholdet i databasen og derved kører nl2br...ej jeg skal nok holde nu.
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 17:52 #20
Det du gør, hvis du efterfølgende fjerner <br>-er, er forkert.
Altså, dette scenarie:

1) Der indtastes tekst i et <textarea>
2) Du kører nl2br inden det sættes i databasen
3) Det vises som det er på en HTML-side

Så vidt så godt - du har ikke lavet ulykker.

4) Hvis teksten skal vises i et <textarea> til ny redigering
  fjerner du <br> og erstattet med \n

Her er fejlen. Antag brugeren selv, med god grund, i sin egen tekst
har indtastet <br>, så bliver også disse tags erstattet med \n.
Dvs. du giver ikke brugeren den originale tekst tilbage. Skidt med
millisekunder, men det er altså ikke brugervenligt ;)
Avatar billede olebole Juniormester
10. oktober 2003 - 18:36 #21
<ole>

Et andet problem opstår, hvis data skal syndikeres. Man kan være mere end 99% sikker på, at modtageren erstatter newlines med breaks - da det er den metode, der bruges som standard verden over.

Det er _yderst_ sjældent ønskeligt at have HTML i DB'en. HTML er jo - som historien har vist - en flygtig ting, der er under konstant udvikling.
F.eks. er det jo ikke fedt at sidde med en database med flere tons <br> - og man så pludselig vil formatere i XHTML  ;o)

/mvh
</bole>
Avatar billede exp Juniormester
10. oktober 2003 - 18:38 #22
Eller hvis man kigger lidt tilbage i spørgsmålene herinde, så falder man pludselig over indlæg der er fyldt med /' pga add/stripslashes()
Avatar billede ldrada Nybegynder
10. oktober 2003 - 19:52 #23
olebole> Så er det vist godt at man allerede har det underligt når man skal skrive <br> istedet for <br />
Avatar billede olebole Juniormester
10. oktober 2003 - 19:58 #24
Det ændrer ikke det mindste ... næste gang er det jo en anden ændring. Essensen er, man kun _aller-aller_ nødigst lægger HTML i databasen.
Desuden er vi mange andre, der har det mere end besynderligt ved at skulle skrive <br />. Vaner, man tillægger sig, når man lærer en ting, er overordentlig vanskelige at lægge af igen.
Netop derfor er det af største vigtighed at tillægge sig de bedste vaner og metoder til en start - og derfor thecoder.dk bliver frarådet at lægge HTML i DB  :)
/mvh
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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