Zeilenumbrüche verschwinden

Nein, ich meine Zeilenumbrüche, die man mit Enter einfügt.
Also hier der Code beim Speichern in die SQL-Datenbank und darunter das Formular:

Code:
elseif($actionnow == "safeentry" AND $value1 != "" AND $value3 != "" AND $value4 != ""){
	$now = time();
	$ip = $_SERVER['REMOTE_ADDR'];
	mysql_query("INSERT INTO guestbook VALUES('$now','$ip','$value1','$value2','$value3','$value4')");
	echo("Eintrag erfolgreich gespeichert.");
}
else{
	if($actionnow == "safeentry"){
		if($value1 == ""){ $error_writer = "<font class=\"rot\">"; }
		if($value3 == ""){ $error_email = "<font class=\"rot\">"; }
		if($value4 == ""){ $error_text = "<font class=\"rot\">"; }
	}

	echo("<br><form action=\"./index.php?page=guestbook&actionnow=safeentry\" target=\"_parent\" method=\"post\">");
	if($error_writer != "" OR $error_email != "" OR $error_text != ""){ echo("<font class=\"rot\"><b>Felder mit einem Stern (*) sind Pflichtfelder!</b></font><p>"); }
	echo("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tr>
	<td align=\"left\" valign=\"middle\">
".$error_writer."Name:</font><img src=\"./images/spacer.gif\" border=\"0\" width=\"".$default_formspace."\">
	</td><td align=\"left\" valign=\"middle\">
<input type=\"text\" name=\"value1\" value=\"".$value1."\" maxlength=\"25\" size=\"45\" tabindex=\"1\"> *
	</td>
</tr><tr>
	<td align=\"left\" valign=\"middle\">
Ortschaft:</font><img src=\"./images/spacer.gif\" border=\"0\" width=\"".$default_formspace."\">
	</td><td align=\"left\" valign=\"middle\">
<input type=\"text\" name=\"value2\" value=\"".$value2."\" maxlength=\"40\" size=\"45\" tabindex=\"2\">
	</td>
</tr><tr>
	<td align=\"left\" valign=\"middle\">
".$error_email."Email:</font><img src=\"./images/spacer.gif\" border=\"0\" width=\"".$default_formspace."\">
	</td><td align=\"left\" valign=\"middle\">
<input type=\"text\" name=\"value3\" value=\"".$value3."\" maxlength=\"60\" size=\"45\" tabindex=\"3\"> *
	</td>
</tr>
	</table><p>".$error_text."Nachricht:</font><br><textarea name=\"value4\" rows=\"6\" cols=\"64\" tabindex=\"4\">".$value4."</textarea> *<p>
<input type=\"submit\" name=\"save\" value=\"Eintrag speichern\"></form>");
}

$value4 steht also für den Text aus dem Textarea. Nur werden daran gar keine Änderungen vorgenommen...
 
$value4 müsste doch eigentlich aus einer der Variablen $_GET oder $_POST kommen. Wird beim übertragen in $value4 auch keine Funktion aufgerufen?

Was wirklich drin steht (in ASCII-Werten) gibt folgender Code aus:
PHP:
$var=$_REQUEST['Textfeldname'];
for ($i=0;$i<strlen($var);$i++) {
    echo ord($var{$i})."<br>\n";
}
In irgendeiner der ausgegebenen Zeilen muss dann 13 oder 10 stehen, ansonsten werden die Zeilenumbrüche gar nicht erst übertragen.

Dann solltest Du mit dem Code Schritt für Schritt die Variablen, in denen Du den Text ablegst verfolgen und überprüfen, an welcher Stelle die Zeilenumbrüche verloren gehen.

Gruß hpvw
 
PHP:
<?php

	if( $_REQUEST['actionnow']=='safeentry' && isset($_POST['submit:save']) ) {

		$error = false;
		if( empty($_POST['value1']) || empty($_POST['value3']) || empty($_POST['value4']) ) {
			$error = true;
			break;
		}

		$query = "
			INSERT INTO
			        `guestbook`
			  VALUES (
			        '".time()."',
			        '".$_SERVER['REMOTE_ADDR']."',
			        '".mysql_real_escape_string($_POST['value1'])."',
			        '".mysql_real_escape_string($_POST['value2'])."',
			        '".mysql_real_escape_string($_POST['value3'])."',
			        '".mysql_real_escape_string($_POST['value4'])."'
			  )
			";
		mysql_query($query) or die('Datenbankabfrage schlug fehl!');
		echo 'Eintrag erfolgreich gespeichert.';

	}

	if( $error === true || !isset($_POST['submit:save']) ) {
?>
	<form action="./index.php?page=guestbook&amp;actionnow=safeentry" target="_parent" method="post">';
		<p>Felder mit einem Stern (*) sind Pflichtfelder!</p>
		<p class="required"><label for="text:value1">Name</label>
			<input type="text" id="text:value1" name="value1" value="<?php echo $_POST['value1']; ?>" maxlength="25" size="45" tabindex="1"> *</p>
		<p><label for="text:value2">Ortschaft</label>
			<input type="text" id="text:value2" name="value2" value="<?php echo $_POST['value2']; ?>" maxlength="40" size="45" tabindex="2"></p>
		<p class="required"><label for="text:value3">E-Mail</label>
			<input type="text" id="text:value3" name="value3" value="<?php echo $_POST['value3']; ?>" maxlength="60" size="45" tabindex="3"> *</p>
		<p class="required"><label for="text:value4">Nachricht</label><br>
			<textarea id="text:value4" name="value4" rows="6" cols="64" tabindex="4"><?php echo htmlentities($_POST['value4']); ?></textarea> *</p>
		<p><input type="submit" name="submit:save" value="Eintrag speichern"></p>
	</form>
<?php
	}
?>
 
Warum muss man den die Werte mit zB. $_POST[value4] und nicht gleich $value4 auslesen? Was ist denn da der Unterschied? Das hat bisher immer gut geklappt...
 
Zurück