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...
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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()
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.
Synes godt om
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 ;)
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
Synes godt om
Slettet bruger
10. oktober 2003 - 17:27#16
Ja uha, det kan tage flere milisekunder ;)
Synes godt om
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?
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
Synes godt om
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.
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 ;)
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)
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
Synes godt om
Ny brugerNybegynder
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.