Hello Torsten,
also ehrlich gesagt habe ich jetzt überhaupt nichts von dem verstanden was Du mir versucht hast zu erklären.
Den Text den ich über das textarea eingebe, anschließend abschicke, ist ein String von beliebiger Länge.
Ich muss doch irgendwie dem String Zeilenumbrüche(<br> würde schon reichen) an beliebiger Stelle übergeben können. Wie?
Was haben denn die <br>-Tags in der Datenbank zu suchen?
Die textarea _kann_ bei entsprechender Einstellung (wrap="virtual") und einem Browser, der das überhaupt macht, die eingegebenen Zeilenumbrüche mitsenden.
Da stehen dann also nach HTTP-Spezifikation CRLF (\r\n) im Text drin, also die beiden Codes 13 dezimal und 10 dezimal. Das nennt man dann Zeilenumbruch.
Die Textschnittstelle einer SQL-Datenbank verträgt diese Zeilenumbrüche innerhalb eines Wertes aber nicht, sondern verlangt nach einer Maskierung. Bei MySQL/PHP hilft da mysql_[real_]escape_string()
http://de2.php.net/manual/de/function.mysql-escape-string.php. Und Textstrings natürlich in Häkchen übergeben!
Nun lässt sich die DB-Schnittstelle den String gefallen und trägt ihn ein. In der Datenbank steht dann wieder nur der nackte String. Die Maskierungen gehen in der Schnittstelle wieder verloren.
Da aber PHP ggf. schon eine Maskierung mittels "eingebautem" addslashes()
http://de2.php.net/manual/de/function.addslashes.php durchgeführt hat, muss man diese erst wieder entfernen, bevor man mysql_[real_]escape_string() benutzt. Anderenfalls hat man in der DB verfremdete Werte stehen.
Wenn man nun die Werte mittels Select wiederholt, muss man sie passend zum Ausgabemedium vorbereiten. Soll in der Textarea eines Browsers ausgegeben werden, muss man nur die HTML-Entitäten behandeln und ggf. auf den passenden Zeichensatz für die Ausgabe umcodieren (ASCII --> UTF-8), wenn dies gewünscht ist. Hat man die Zeichen schon in UTF-8 empfangen, und auch so abgespeichert, ist das natürlich nicht notwendig. Man muss sich also ein wenig mit dem Zustand seiner Daten in jedem Moment der Übertragungskette beschäftigen und darf nicht einfach irgendwo etwas verkurbeln.
Wenn man die Werte in einem HTML-Bereich des Browsers ausgeben lassen will, muss man die im String enthaltenen Zeilenumbrüche erst noch durch die von Browsern verständlichen ergänzen, also den wie für die Textarea aufbereiteten String nochmals mit nl2br() behandeln.
Ich hoffe, nun hast Du alles verstanden.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau