Hey,
ik heb een klein probleempje waar ik me al enkele dagen kreupel op gezocht heb. Het principe kan ik heel simpel uitleggen, en kan je door te replyen ook nog eens zelf beleven ;).
Stel ik geef een text in, ik blaat er wat op los, en dan duw ik op enter.
Zoals dit.
Mijn vraag is, hoe krijg ik die enters nu in mijn db, zodat dat newlines worden, en ik die uit de db met de functie nl2br kan halen?
Ik heb al verscheidene keren gezocht, redelijk intensief, en ik denk dat ik er gewoon overheen gekeken heb.
Als iemand me dit kan vertellen zou ie me met zo iets kleins (i assume) een enorm grote dienst doen.
- newlines in db zetten
-
13-05-2007, 22:18 #1
- Berichten
- 891
- Lid sinds
- 19 Jaar
newlines in db zetten
-
-
13-05-2007, 23:06 #2
- Berichten
- 625
- Lid sinds
- 19 Jaar
De enters die je in een textarea typt worden toch gewoon bewaard in de database ? Met de functie nl2br zet je deze dan om naar <br /> tags zodat de enters ook zichtbaar zijn in de browser.
Ik zie het probleem niet echt ? :s
echo nl2br($result->field);
-
13-05-2007, 23:24 #3
- Berichten
- 891
- Lid sinds
- 19 Jaar
Ahzo, dit gebeurt automatisch?
Het probleem viel me pas op bij de volgende toepassing:http://cmdstud.khlim.be/~gveugen/ICT/AJAX%20Guestbook/
Als ik hier in men form iets ingeef met enters, worden deze niet als newlines in mijn db gezet (of ik doe iets fout). Ik haal de content er wel uit met de functie nl2br(), maar enters zet ie niet om :s
edit: komt dit misschien door het type veld dat ik opgeef? dus bv longtext ipv varchar ofzo, heeft het daar iets mee te maken?Laatst aangepast door Glenn Veugen : 13-05-2007 om 23:29
-
14-05-2007, 06:52 #4
- Berichten
- 312
- Lid sinds
- 18 Jaar
waarom zou je het in je database ook al willen in enters?
je moet de functie gebruiken als je alle informatie er uit haalt niet als je het er in steekt.
-
14-05-2007, 09:25 #5
- Berichten
- 75
- Lid sinds
- 18 Jaar
@niels, je moet dan wel weten waar die enters moeten komen natuurlijk. En dan bij het uit de database halen nl2br() om de enters te laten zien
-
14-05-2007, 14:03 #6
- Berichten
- 891
- Lid sinds
- 19 Jaar
Origineel gepost door Niels B
je moet de functie gebruiken als je alle informatie er uit haalt niet als je het er in steekt.
In bovenstaand voorbeeld wordt mijn probleem perfect geillustreerd. Ik gebruik de functie nl2br(), maar het probleem is dat er gewoon geen newlines in de db staan. De concrete vraag dus: hoe doe ik dit?
edit: bij de verwerking <br /> tags vervangen door \r\n, kan dit?
-
14-05-2007, 15:19 #7
- Berichten
- 312
- Lid sinds
- 18 Jaar
je kan dit met preg_replace.
<?php
$string = 'je tekst uit de\r\n database';
$patterns[0] = '\r';
$patterns[1] = '\n';
$replacements[1] = '<br />';
$replacements[0] = '<br>';
echo preg_replace($patterns, $replacements, $string);
?>
Ik heb het wel nog niet getest
-
14-05-2007, 16:00 #8
- Berichten
- 891
- Lid sinds
- 19 Jaar
Ok, ik zal het eens testen, maar op dat principe moet dus alleszins verder zoeken.
Bedankt alvast.
edit: doet het niet, misschien doe ikzelf iets fout. maar is dit echt de standaard methode die bv hier op vBulletin gebruikt wordt, of bij andere fora zoals phpBB?
//Nee ik kan niet bij de sourcecode van vBulletin ;)Laatst aangepast door Glenn Veugen : 14-05-2007 om 16:12
-
14-05-2007, 16:16 #9
- Berichten
- 891
- Lid sinds
- 19 Jaar
Origineel gepost door Niels B
je kan dit met preg_replace.
<?php
$string = 'je tekst uit de\r\n database';
$patterns[0] = '\r';
$patterns[1] = '\n';
$replacements[1] = '<br />';
$replacements[0] = '<br>';
echo preg_replace($patterns, $replacements, $string);
?>
Ik heb het wel nog niet getest
En die functie omgekeerd zetten lukt blijkbaar ook niet -_-.
-
14-05-2007, 17:32 #10
- Berichten
- 95
- Lid sinds
- 19 Jaar
Code:<?php function hoe_werkt_nl2br ($input) { $replace = array ( /* double quotes */ "\r\n", /* nodig zodat de */ "\r", /* string intrapoleerd */ "\n", ); return str_replace ($replace, '<br />', $input); } function hoe_kun_je_teruggaan ($input) { return str_replace ('<br>', "\n", $input); } ?>
Je slaat op "foo\nbar\nbaz"
Je gebruikt: echo nl2br ("foo\nbar\nbaz");
Je output: foo<br />bar<br />baz
-
14-05-2007, 17:56 #11
- Berichten
- 75
- Lid sinds
- 18 Jaar
een manier om niet meer met \r en \n enz te hoeven werken in PHP is het gebruik van PHP_EOL. Deze constante is gewoon overal beschikbaar in je script
-
14-05-2007, 18:07 #12
- Berichten
- 891
- Lid sinds
- 19 Jaar
Yo mannen, ik snap het probleem al. In dat gastenboekje werk ik met AJAX (het was de bedoeling om met ajax te werken), en bij het verzenden van met XmlHttp variabele gebruik ik de GET methode. De POST methode is natuurlijk geschikter, maar dat kreeg ik op dat moment niet goed geimplementeerd (wist niet goed hoe, en de tijd was aan het dringen).
Dus de oplossing waar ik naar zocht is gewoon de entry een nl2br() meegeven, en bij de uitvoer niets.
Bedankt voor de moeite alvast, het was uiteindelijk een probleem veroorzaakt door verkeerd gebruik van form submitting.
-
24-05-2007, 10:25 #13
- Berichten
- 40
- Lid sinds
- 19 Jaar
online editors als fck enzo doen het ook zo.
direct na submit zetten ze de codes erneer.
en die staan dan ook in database.
Maar goed dat weer is opgelost:)
-
05-06-2007, 16:43 #14
- Berichten
- 137
- Lid sinds
- 18 Jaar
Als dit script van jou is zou ik er toch eens htmlentities overeenhalen
-
05-06-2007, 16:45 #15
- Berichten
- 891
- Lid sinds
- 19 Jaar
Dit is mijn script ja, en het probleem was/is dat ik de content via een GET httprequest meegeef, met een post is dit geen probleem. Ik heb het niet meer opgelost, aangezien het maar een oefening was.
En htmlentities werkte niet, daar was ik je al lang voor ;).
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic