Zielenumbruch in Eingabe

uwee

Erfahrenes Mitglied
Hallo an alle!

Ich habe folgendes Problem:

Ich bin gerade dabei eine Eingabemaske zu ändern. Ich habe in meinem Forumlar mehrere kleine Editfelder. Nun will eine große Textarea draus machen. Die Daten werden in eine MySQL-Db geschrieben.
Beim auslesen gibt es folgendes Problem: Wenn die Daten in eine Tabelle geschrieben werden, sind die Zeilenumbrüche nicht mehr da! Statt einer neuen Zeile wird einfach ein Leerzeichen an die Stelle gesetzt. So werden Texte natürlich verformt und bestimmte Abschnitte lassen sich nicht mehr auseinanderhalten. In meiner Übersich in der Db allerdings stimmt noch alles. Wenn ich nun die Zeilenumbrücke per Hand eingebe (br), dann funktioniert das ganz plötzlich, weils in der Ausgabe steht. Nun ist dieses Eingabefeld nicht für mich, sondern für andere User, von denen ich nciht verlangen kann, dass sie bei jedem Zeilenumbruch ein <br> setzen.
Das "Enter" in meiner Eingabe soll gleich einem <br> sein
Gibt es eine andere Möglichkeit, Zeilenumbrüche so zu erzeugen?!

UweE
 
Zuletzt bearbeitet:
Hallo uwee!

Ja, gibt es!
Lass die User Ihre Eingaben so tätigen, wie immer.
Auch die Einträge in die DB bleiben, wie sie sind (zumindest was die Zeilenumbrüche betrifft ^^).
Wenn Du die Daten dann erneut zum editieren anzeigst, dann machst Du vorher mit der Variable, in der die Daten für das <textarea> stecken folgendes:
PHP:
$variable = ereg_replace("\n", "<br />", $variable);
Das bewirkt, dass alle Zeilenumbrüche der Eingabe - "\n" - in Zeilenumbrüche der Ausgabe - "<br />" - umgewandelt werden.

redlama
 
naja, meine klamotten stecken sozusagen alle in einer Variable, die die Einträge dann aufteilt, hier weinmal der Code dafür:

PHP:
echo "
<tr><td><b>Aufnahme-ID:</b></td>	<td>",$row->a_id,"</td></tr>
<tr><td><b>Kunden-ID:</b></td>	<td>",$row->k_id,"</td></tr>
<tr><td><b>Name:</b></td>	<td>",$row->name,"</td></tr>
<tr><td><b>Datum Aufnahme:</b></td>	<td>",$row->d_an,"</td></tr>
<tr><td><b>Datum Erledigt:</b></td><td>",$row->d_ab,"</td></tr>
<tr><td><b>Mandanten:</b></td>	<td>",$row->mandant,"</td></tr>
<tr><td><b>Beschreibung:</b></td>	<td><textarea rows=3 cols=40>",$row->beschreibung,"</textarea></td></tr>
<tr><td><b>Bearbeiter:</b></td>	<td>",$row->bearbeiter,"</td></tr>
<tr><td colspan=2><hr></td></tr>	
\n";

WO muss ich das denn einbinden?! Das verstehe ich net so recht... vor allem, hier wird die Variable $row definiert:
PHP:
while ($row=mysql_fetch_object($result)){

oder bietet es sich an, einfach die Variable am Anfang vorzudefinieren und dann hinterher wieder zu benutzen:
PHP:
$row = ereg_replace("\n", "<br />", $row);

[-]

while ($row=mysql_fetch_object($result)){

is das nun richtig oder wie muss ich das machen?
 
Nein, das ist der Zeilenumbruch, wie er von PHP interpretiert wrd.
Also der User drückt die "Enter" Taste und PHP liest daraus ein "\n".
Und das wird dann zum schrieben umgewandelt.

redlama
 
Ich vermute, das was Du suchst, soll für $row->beschreibung sein!?
Dann mach es so:
PHP:
$text = ereg_replace("\n", "<br />", $row->beschreibung);
echo " 
<tr><td><b>Aufnahme-ID:</b></td>    <td>",$row->a_id,"</td></tr> 
<tr><td><b>Kunden-ID:</b></td>    <td>",$row->k_id,"</td></tr> 
<tr><td><b>Name:</b></td>    <td>",$row->name,"</td></tr> 
<tr><td><b>Datum Aufnahme:</b></td>    <td>",$row->d_an,"</td></tr> 
<tr><td><b>Datum Erledigt:</b></td><td>",$row->d_ab,"</td></tr> 
<tr><td><b>Mandanten:</b></td>    <td>",$row->mandant,"</td></tr> 
<tr><td><b>Beschreibung:</b></td>    <td><textarea rows=3 cols=40>",$text,"</textarea></td></tr> 
<tr><td><b>Bearbeiter:</b></td>    <td>",$row->bearbeiter,"</td></tr> 
<tr><td colspan=2><hr></td></tr>     
\n";

redlama
 
aha, okay, danke, das sieht nach genau dem aus, was ich brauche!

ich werds nachher mal testen

VIELEN DANK
 
Constantin Vellenzer hat gesagt.:
PHP verwöhnt uns da auch mit eine Funktion namens nl2br() ;)

mfg
sam
Im Prinzip möchte ich Dir da zustimmen, jedoch habe ich schon seltsame Erfahrungen mit dieser Funktion gemacht.
Ich hatte ebenfalls ein <textarea> und wollte die Daten beim Editieren genauso angezeigt bekommen, wie bei 1. Eintrag, jedoch hatte ich dann im <textarea> 2 Zeilenumbrüche, wo ich nur einen beim 1. Eintrag getätigt hatte.
Bsp.:
Code:
Dies
ist ein
Test
wurde zu
Code:
Dies

ist ein

Test
Keine Ahnung warum, aber aus diesem Grund habe ich mich für die Version (s.o.) entscheiden.

redlama
 
Benutze nl2br() seit Jahren in unzähligen Projekten und hatte nie Probleme...außer ich habe die Funktion aus Versehen 2x angewandt (beim Speichern und beim Auslesen z.B.).

mfg
sam
 
Zurück