• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Self_PHP und Textarea

Haerti

New member
Hallo zusammen,

ich habe mir ein kleines Gästebuch geschrieben, das ganze funktioniert auch wunderbar, aber deim Check on alle Felder einen Wert haben, wird beim Reload der Text aus dem Textarea (trotz hidden) nicht mehr angezeigt, mit den beiden anderen Werten geht das ohne weiteres.

Heisst das es ist nicht möglich den Inhalt einer Textarea in einem Hiddenfeld zu speichern ???

PHP:
<?php
$check = $_POST["reload"];
$content = $_POST["eintrag"];
$autor = $_POST["autor"];
$email = $_POST["mail"];



  $db = mysql_connect("localhost", "user", "password") or die ("failed to connect");
  mysql_select_db("db-user",$db);
if($error1 != "1" && $error2 != "1" && $error3 != "1") 
{
	if($email != "" && $content != "" && $autor != "" && $check == "1")
	{
	  $sSQL="insert into gaestebuch (email, text, autor, erstellt_am) values ('$email','$content','$autor', '15.12.2008')";
	  mysql_query($sSQL);
	  $check = "0";
	}
}
?>
<html>
	<head>
		<title>Gästebuch</title>
	</head>
	<?php
		$SQL_statement="SELECT * FROM gaestebuch order by erstellt_am";
		$resultset=mysql_query($SQL_statement);
	?>
	<body bgcolor="#000033" link="ffffff"">
	 <font color="ffffff">
		<h1 align ="center">Gästebuch</h1>
		<?php
			echo "<table align='center'>";
			while($data=mysql_fetch_array($resultset))
			{
					echo "<tr><td bgcolor ='#ffffff' colspan='2'>".$data['text']."</td></tr>";
					echo "<tr><td><font color ='#ffffff'>von <a href='mailto:".$data['email']."'>".$data['autor']."</td></tr>";
					echo "<tr><td> </td></tr>";
					
			}
			echo "</table>";

			//Close Connection
			mysql_close();
		?>
		<h2 align="center">Neuen Gastebuch-Eintrag schreiben</h2>
		<form name="save_buch" action="<?php echo "$PHP_SELF"; ?>" method="post">
			<input type ="hidden" name ="eintrag" value ="<?php echo $content; ?>">
			<input type ="hidden" name ="mail" value ="<?php echo $email; ?>">
			<input type ="hidden" name ="autor" value ="<?php echo $autor; ?>">
		<table align="center">
			<tr>
				<td colspan="2">Text:</td>
			</tr>
			<tr>
				<td colspan="2"><textarea name="eintrag" cols="50" rows="10" value ="<?php echo $content; ?>"></textarea></td>
			</tr>
			<?php
				echo "<tr>";
				if(empty($content) && $check == "1") 
					{
						echo "<td><h5><font color ='#ffffff'>Bitte geben Sie einen Text ein!</font></h5></tr>";
						$error3 = "1";
					}
					else
					{
						echo "<td> </td>";
						$error3 = "0";
					}
				echo "</tr>";
			?>
			<tr>
				<td>Name:</td>
				<td>E-Mail Adresse:</td>
			</tr>
			<tr>
				<td><input type ="text" name ="autor" value ="<?php echo $autor; ?>"></td>	
				<td><input type ="text" name ="mail" value ="<?php echo $email; ?>"></td>
			</tr>
				<?php
					echo "<tr>";
					if(empty($autor) && $check == "1") 
					{
						echo "<td><h5><font color ='#ffffff'>Bitte geben Sie<br>Ihren Namen ein!</font></h5></td>";
						$error1 = "1";
					}
					else
					{
						$error1 = "0";
						echo "<td> </td>";
					}
						
					if ($email != "" && !preg_match("/^[^@]+@.+\.\D{2,5}$/", $email)) 
					{
						echo "<td><h5><font color ='#ffffff'>Ihre E-Mail Adresse<br>ist fehlerhaft!</font></h5></td>";
						$error2 = "1";
					}
					else if(empty($email) && $check == "1")
					{
						echo "<td><h5><font color ='#ffffff'>Bitte geben Sie eine<br>E-Mail Adresse ein!</font></h5></td>";
						$error2 = "1";
					}
					else
					{
						echo "<td> </td>";
						$error2 = "0";
					}
				 echo "</tr>";
				?>
			<tr>
				<td colspan="3" align="left"><input type ="submit" value="Speichern"></td>
			</tr>
		</table>
		<input type ="hidden" name="reload" value="1">
		</form>
	</body>
</html>
 
Heisst das es ist nicht möglich den Inhalt einer Textarea in einem Hiddenfeld zu speichern ???
Doch, aber ich vermute du hast nicht bedacht, dass in einer Textarea auch Zeilenumbrüche enthalten sein können.

Und ein Tipp, du solltest deine HTML Kenntnisse mal auffrischen, der Code sieht aus wie Anno 1998
 
der Code sieht aus wie Anno 1998

Was solls Hauptsache er funktioniert wie er soll.

dass in einer Textarea auch Zeilenumbrüche enthalten sein können.

Hm ok mein Problem war das ich die Rückgabe nicht ins value der Textarea legen musste sondern:

PHP:
<textarea name="eintrag" cols="50" rows="10"><?php echo $content; ?></textarea>

Eine Frage bleibt aber noch, das Programm speichert die Inhalt der Textarea zwar richtig im Hidden Feld und zeigt diese auch mit Zeilenumbrüchen an,
aber wenn ich das ganze in die Datenbank speichere und wieder selectiere steht alles in einer Zeile.

Wie kann ich denn die Zeileumbrüche mit in die Datenbank speichern?
 
Hm ok hab jetzt das Feld auf Text gesetzt, wird in der Datenbank auch super mit Absätzen angezeigt.

Aber wie bekomm ich es denn hin das er beim Select für den Absatz ein <br> setzt?
 
Was solls Hauptsache er funktioniert wie er soll.
Stimmt, wundert mich auch dass die Browser noch diesen Balast von vor 10 Jahren darstellen.

Ich nehme an, dass bei einem HTML Quellcode in der Form
HTML:
<input type="hidden" value="der
Text
aus der Textarea: "hallo, ich bin's" -> der Schlaue :-)
">
der eine oder andere Browser weniger tolerant ist.
 
nl2br() wandelt zeilenumbrüche in <br /> um. Du könntest die Daten auch in einer Session speichern. Hast du ein mehrseitiges Formular, oder warum benötigst du die hidden fields?
 
Zurück
Oben