Textarea fügt <br> hinzu

iXtends

Grünschnabel
Hallo,
ich mal wieder :)

Habe jetzt wieder ein unerklärliches Problem. Ich habe ein Textfeld und möchte es in einer DB speichern. Wenn ich das Formular dann bearbeiten möchte, gebe ich den Inhalt der DB wieder in das Textfeld aus. Wenn man dann aber wieder speichert, fügt er mir immer ein <br> zusätzlich ein.
Meine Zeilenumbrüche werden also immer einer mehr. Woran liegt das?
Die Daten speicher ich blanko in der DB. Würde sie dann beim Auslesen mit nl2br() formatieren. Aber warum speichert der die <br> überhaupt in der DB? Ein Textfeld arbeitet doch mit \n :confused:

Ich versteh das nicht^^

Danke für eure hilfe
 
... kleine frage:
Ablauf des Prozesses:
1. Eingabe der Daten in das Textfeld - Blanko in der Db speichern...
2. Auslesen der Daten aus der Db bearbeiten via nl2br rein in das Textfeld...
3. Daten im Textfeld bearbeiten - blanko mit dem break aus Schritt 2 in der Datenbank speichern....
usw. usw. usw.
Richtig ?
 
Bei der Ausgabe in ein Textfeld musst du darauf achten, dass dieses nahtlos anschließt. Also:
PHP:
echo '<textarea>'.htmlspecialchars($text).'</textarea>';
 
Der Ablauf ist wie folgt:
1. Eingabe der Daten in ein Textfeld
2. Speichern der Blanko Daten in einer DB
3. auslesen der DB und reinschreiben in ein Textfeld (ohne nl2br), im Textfeld sieht man jetzt auch nach jedem Satz ein <br>, was ja eigentlich nicht sein dürfte^^
4. Speichern der Daten, jetzt wird nach jedem Zeilenumbruch wieder ein <br> eingefügt. Dadurch stehen jetzt nach jedem Satz 2 <br>
Beim nächsten mal auslesen kommt wieder ein <br> mehr hinzu usw.

@Gumbo, habe ich gemacht, ändert aber nichts an der Problematik :(
 
Dann kommen wir ohne deinen Quelltext von den besagten stellen nicht weiter.

Von einer Automatisierung für sowas habe ich auch noch nie gehört (hat vllt nicht viel zu sagen aber als PHPler würde man von sowas eigentlich hören)
 
Okay, hier der Quellcode

Die HTML Seite mit dem Formular und dem Textfeld
HTML:
<h1>News schreiben</h1>
<div class="ct">
	<form action="?action=admAddNews" method="post">
		<table class="ft" cellpadding="0" cellspacing="0">
			<tr>
				<td>
					Title:
				</td>
				<td>
					<input type="text" name="title" value="{$current.title}" />
					<input type="hidden" name="id" value="{$current.id}" />
				</td>
			</tr>
			<tr>
				<td></td>
				<td>
					<textarea name="text" rows="20" cols="70">{$current.text}</textarea>
				</td>
			</tr>
			<tr>
				<td></td>
				<td>
					<input type="submit" value="Speichern" />
				</td>
			</tr>
		</table>
	</form>
</div>

Und hier die PHP Funktion die das ganze speichert bzw. wieder ausliest zum Speichern:
PHP:
public function admAddNews($args = '') {
			global $smarty;
			
			$found = array();
			
			if(isset($_POST['title'])) $found['title'] = $_POST['title'];
			if(isset($_POST['id'])) $found['id'] = $_POST['id'];
			if(isset($_POST['text'])) $found['text'] = $_POST['text'];
			
			if(sizeof($found) > 1) {
				if($found['id'] == '') {
					self::sqlQuery('INSERT INTO news (title, text, timestamp, publish) 
														VALUES(
															"'.$found['title'].'",
															"'.$found['text'].'",
															'.mktime().',
															1
														)');
				} else {
					self::sqlQuery('UPDATE news SET 
													title = "'.$found['title'].'",
													text = "'.$found['text'].'"
												WHERE id = '.$found['id']);
				}
				
				self::admShowNews();
			} else {
				if($args['id'] != '') {
					$result = self::sqlQuery('SELECT * FROM news WHERE id = '.$args['id']);
					$data = self::parseQuery($result['data']);
					
					$smarty->assign('current', $data[0]);
				}

				$smarty->display('newsForm.tpl');
			}
		}

Von einer Automatisierung habe ich auch noch nie etwas gehört, deswegen wundert mich das ganze ja. Kenn mich jetzt schon etwas besser mit PHP aus, aber naja.
Ich höre die ganze zeit, dass Leute die aus einem Textfeld die Daten mit <br> speichern wollen und das nicht hinbekommen und ich will genau das Gegenteil^^

Komische Welt xD

Ich hoffe der Quellcode bringt uns weiter ;)
 
Zuletzt bearbeitet:
Könnte man das irgendwie ändern?
Weil normalerweise kennt ein Textfeld <br> ja garnicht. Und es kann ja nicht sein, dass der das nur bei mir so speichert^^

Das ganze ist Lokal und Online, also kanns am Server auch nicht liegen. Ich raff es echt nicht^^
 
ICH HAAAABS =)

Wie dumm ich bin xD
Ich habe mir eine eigene Funktionssammlung geschrieben um z.B. wenn ich daten von einer MySQL Datenbank auslese nur einen kleinen Funktionsaufruf brauche und habe die Daten in einem Array stehen. Hier habe ich damals, einen extra Parameter nl2br eingebaut, damit ich die Daten auch mit <br> zurück bekomme. An diesen Parameter habe ich nicht mehr gedacht und da er standartmäßig auf "true" steht, habe ich das jetzt immer mit <br> ausgelesen und auch so ins Textfeld geschrieben.

Man was ein , 3 Stunden habe ich an diesem Fehler gesucht xD

Trotzdem vielen Danl für eure Hilfe.
 
Zurück