Een opgeslagen witregel zien

Plaats reactie
Gebruikersavatar
Pi R²
Elite Poster
Elite Poster
Berichten: 811
Lid geworden op: 03 jan 2003, 17:15
Locatie: Sint-Niklaas
Contacteer:

weer een stomme-newbie-PHP-vraag :

als ge een gastenboek, nieuwssyteem, ... hebt waar ge tekst in kunt schrijven, en je typt in het tekstvak een witregel, dan wordt met die witregel of return geen rekening gehouden als je die query terug uitleest.


Vb. Slaag dit op in Mysql via formulierke :

--------------
Ik ben zot

En ik ook
--------------

=> dat wordt als je dat opvraagt:

-------------- Ik ben zot En ik ook --------------

:arrow: Mijn boeiende vraag is nu : hoe lost ge dat op? :arrowl:
Lang Leve Mijn Eigen! Het geheim voor een lang leven: niet stoppen met ademen
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Dat is een veel voorkomende vraag.
Bovendien moet je oppassen met html-tags (had je daar al rekening mee gehouden?). Stel dat ik in je bericht "</td></tr></table>" zou typen, en je layout steekt in een tabel, dan zou het tonen van dat bericht je hele layout overhoop halen.

In ieder geval, dat is makkelijk op te lossen. Voor jouw eigenlijke probleem moeten we de carriage return (\n) vervangen door een harde enter in html (<br>). Daar gebruiken we de functie ereg_replace() voor.
Voor het tweede probleem, dat met de html-tags is een specifieke functie: htmlentities().

Als we alles samen zetten (en ik ga er gemakshalve van uit dat de naam van je inputveld "bericht" is) krijgen we:

Code: Selecteer alles

<? $nieuw_bericht = ereg_replace("\n","<br>",htmlentities($_POST["bericht"])); ?>


Daar zal het wel mee lukken zeker ;-)
Gebruikersavatar
All Your Base
Plus Member
Plus Member
Berichten: 190
Lid geworden op: 17 sep 2002, 11:57

je kan ook eens proberen je bericht tussen een <pre> tag te steken, dan wordt er wel rekening gehouden met extra spaties en returns. aan de hand van css stylesheets kan je eventueel nog het lettertype en marges en dergelijke van de <pre> tag aanpassen.
Gebruikersavatar
Pi R²
Elite Poster
Elite Poster
Berichten: 811
Lid geworden op: 03 jan 2003, 17:15
Locatie: Sint-Niklaas
Contacteer:

ha bedankt allemaal. Van prutsers die daar een tabel insteken die de lay-out om zeep helpt, of zelfs javascriptjes insteken, daar heb ik komaf mee gemaakt met htmlspecialchars($_POST["bericht"]);
Lang Leve Mijn Eigen! Het geheim voor een lang leven: niet stoppen met ademen
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Bwa, da's een functie die eigenlijk hetzelfde doet als wat ik opgaf. Vrij nutteloze functie dus. Bovendien heb je bij het mijne meer controle. Enfin, het is gewoon nog een alternatief, al ben ik meer voor ereg_replace te vinden...
Gebruikersavatar
Pi R²
Elite Poster
Elite Poster
Berichten: 811
Lid geworden op: 03 jan 2003, 17:15
Locatie: Sint-Niklaas
Contacteer:

Ja, maar ik moet dienen ereg_replace nog een paar keer gebruiken om smileykes om te zetten naar image-tags... Als ge dan toch met ereg_replace bezig zijt, kunt ge beter alles zo houden.
Lang Leve Mijn Eigen! Het geheim voor een lang leven: niet stoppen met ademen
CrAtOr

hallo!

Kan er iemand mij redden en zeggen dat dit ook op een of andere manier mogelijk is in asp??

of hou ik me dan maar bij de

Code: Selecteer alles

<pre> 
?

grtz, CrAtOr

Editted by SeNsEi Ze0n
code zet je best tussen [ code] en [ /code] tags (zonder spaties)
ik heb je volgende post berwijdert om het leesbaar te houden
Gebruikersavatar
Erik
Elite Poster
Elite Poster
Berichten: 1321
Lid geworden op: 15 sep 2002, 02:46
Uitgedeelde bedankjes: 2 keer
Bedankt: 18 keer

hi,

in asp ben ik niet zo thuis maar ik ben der van overtuigd dat het mogelijk is ik heb echter geen idee hoe :roll:
Registered Linux user #286313
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Ik ben niet zeker, maar volgens mij kan dat met de vergelijkbare functie replace()

Dan krijg je iets als:

Code: Selecteer alles

<%
response.write(Replace(Request.Form("bericht"),"\n","<br />"))
%>


Nu ben ik wel niet zeker dat de newline character in ASP ook "\n" is...

--meon
airzimmy
Erelid
Erelid
Berichten: 1047
Lid geworden op: 19 sep 2002, 14:01
Contacteer:

lang geleden maar is dat niet vbcrlf (carriage return line feed) in Microsoft apps
Spirit Wolf

Hei,

ben toevallig van de forum skynet op deze terechtgekomen om voor php support te zoeken. Skynet zelf ondersteunt dit blijkbaar dus niet, damn.

Maar heb toevallig wel hier gevonden hoe je kan zorgen dat de enters er wel komen in te staant :-D so thnx. Ben echt een heel newbie op gebied van php en als eerste heb ik een guestbook gekozen om te maken. Maar die enters werken blijkbaar alleen voor de nieuwe posts. Ik heb gewoon wat gebrabbel er eerst ingestoken voor dat ik jullie eenvoudige code had. Nu met die code van jullie wordt dit alleen toegepast op de nieuwe posts, is dit normaal???

p.s.: hoe krijg je smiley's in je guestbook??? dat lijkt me leuk. Let wel, wil dat allemaal zelf doen, wil niet met die installatiepakketen waarbij je praktisch niks werkt heb, ik wil echt het zelf programmeren.

Ik denk dat ik me ook maar eens snel hier ga registreren, lijken veel oplossingen te vinden te zijn

bye
Spirit Wolf
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Spirit Wolf schreef:Nu met die code van jullie wordt dit alleen toegepast op de nieuwe posts, is dit normaal???

Vooral eerst welkom op het forum!

De breaks worden omgezet bij het posten (opslaan in database), niet bij hen inlezen uit de database. Bijgevolg zullen enkel nieuwe posts die omzetting hebben, en zullen de oude posts blijven zoals ze zijn (daar verandert immers niets aan).

De oude posts automatisch doen verwerken is ook quasi een onmogelijke opdracht, "\ n" wordt namelijk niet opgeslagen en valt gewoon weg: je kan dus niet meer achterhalen waar ooit een newline heeft gestaan.

De smileyvraag is al beantwoord in een andere topic heb ik gezien, daar ga ik dan geen dubbel antwoord op geven ;-)
Plaats reactie

Terug naar “Development”