Zeilenumbruch mit Textarea
level
- php
Hallo...
folgendes:
Ich übergebe einen Text aus einer Textarea in eine SQL Datenbank folgendermaßen.
'".addslashes(htmlspecialchars($_POST['content']))."',
Nun wenn ich die Daten wieder außlese, hab ich das Problem, das die Zeilenumbrüche nicht berücksichtigt werden und alles nebeneinander
geschreiben wird...
dann hatte ich gerade probiert
'".addslashes(htmlspecialchars(explode("\n",$_POST['content'])))."',
brachte aber auch nicht den erfolg...
gerade habe ich irgend etwas von nl2br gelesen, kann mir den zusammenhang und die umsetzung nicht erklären...
vielleicht kann mir hier einer helfen
MfG level
hi,
Nun wenn ich die Daten wieder außlese, hab ich das Problem, das die Zeilenumbrüche nicht berücksichtigt werden und alles nebeneinander
geschreiben wird...
natürlich sind die zeilenumbrüche nach wie vor vorhanden - schau in den quelltext, wenn du es nicht glaubst.
gerade habe ich irgend etwas von nl2br gelesen, kann mir den zusammenhang und die umsetzung nicht erklären...
dann schlage diese funktion bitte im manual nach, http://www.php.net/manual/de/function.nl2br.php
gruß,
wahsaga
Ok, andere Frage...
Wann muss ich die dein einfügen?
Bevor der Text in die Datenbank geschreiben wird,
oder beim auslesen?
hi,
Wann muss ich die dein einfügen?
Bevor der Text in die Datenbank geschreiben wird,
oder beim auslesen?
das kommt darauf an, was du erreichen willst.
willst du den text schon mit <br /> in der DB stehen haben? das ist aber ungünstig, falls er noch mal über eine textarea editiert werden soll. und wenn du pauschal htmlentities/-specialchars darauf anwendest, um ggf. eingegebenes HTML zu "entschärfen", bekommst du u.U. auch probleme.
idR. ist es deshalb empfehlenswerter, diese ersetzung bei der ausgabe zu machen.
gruß,
wahsaga
Hallo,
probiers doch einfach mal mit JavaScript.
document.FORMNAME.TEXTAREANAME.value = document.FORMNAME.TEXTAREANAME.value.replace(/\n/g,"<br>");
oder so ähnlich.. sollte gehn.
MfG Ferret
Hallo,
probiers doch einfach mal mit JavaScript.
auf javascript wollte ich eigentlich ganz gerne verzichten...
Hello,
Ich übergebe einen Text aus einer Textarea in eine SQL Datenbank folgendermaßen.
'".addslashes(htmlspecialchars($_POST['content']))."',
Das ist ja leider auch verkehrt herum:
1. feststellen, ob PHP die magic_quotes_qpc benutzt
2. wenn ja, dann Maskierungen _entfernen_, und nicht hinzufügen
3. die mysql-typische Maskierung für die Schnittstelle verwenden!
Dann bleiben die Umbrüche auch erhalten. So wie Du es machst, werden sie nicht maskiert und verschwinden dadurch. addslashes() behandelt nämlich nicht die Umbrüche.
<cite>
Returns a string with backslashes before characters that need to be quoted in database queries etc. These characters are single quote ('), double quote ("), backslash () and NUL (the NULL byte).
</cite>
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
So hab die Lösung dann doch noch gefunden und es funktioniert auch.
Nur zur Info: addslashes <-- übergibt doch die Umbrüche
$content = str_replace("\r\n", '<br />', $content);
Sollte die Ausgabe (wie in einem Gästebuch) in einer Schleife ausgegeben werden, um die "Beiträge" zu listen, sollte
$content = str_replace("\r\n", '<br />', $content);
auch in der Schleife stehen.
Dieser Beitrag ergänzt meine eigene Frage mit der Lösung.
Für die spätere Nutzung und Auflösung solcher Probleme.
MfG level
hi,
Nur zur Info: addslashes <-- übergibt doch die Umbrüche
soll heißen?
addslashes nimmt selbstverständlich auf umbrüche _überhaupt keinen_ einfluss.
$content = str_replace("\r\n", '<br />', $content);
schlecht - nicht alle systeme übergeben \r\n für einen zeilenumbruch.
Dieser Beitrag ergänzt meine eigene Frage mit der Lösung.
Für die spätere Nutzung und Auflösung solcher Probleme.
im archiv finden sich bereits weitaus bessere lösungen für diese aufgabe.
gruß,
wahsaga