Bestehende Datensätze ändern mit UPDATE

puck77

Grünschnabel
Hallo Leute,

ich möchte Datensätze aus der MYSQL-Datenbank in ein Formular auslesen, was auch bereits funktioniert. ich kann bereits die Input-Boxen zurückschreiben, leider werden die die Textareas nicht zurück in die Datenbank geschrieben:

So sieht mein UPDATE-Befehl aus.

Code:
 $query="UPDATE blog SET
	datum=now(),
	titel='".addslashes($titel)."',
	beitrag='".addslashes($beitrag)."',  //textarea
	rubrik='".addslashes($rubrik)."',
	link='".addslashes($link)."',
	url='".addslashes($url)."'
	WHERE id='$id'";
	$sql=mysql_query($query)
		or die(mysql_error());

So mein <textarea>:

Code:
echo "<textarea name='textarea' cols='20' rows='10' >$row[beitrag]</textarea>";

Könnt Ihr mir bitte weiterhelfen, danke vorab! ;-)
 
PHP:
$query="UPDATE `blog` SET
	`datum` = '".now()."',
	`titel` = '".addslashes($_POST['titel'])."',
	`beitrag` = '".addslashes($_POST['beitrag'])."',
	`rubrik` = '".addslashes($_POST['rubrik'])."',
	`link` = '".addslashes($_POST['link'])."',
	`url` = '".addslashes($_POST['url'])."'
	WHERE `id` = '".$_POST['id']."'";
$sql=mysql_query($query) or die(mysql_error());

echo '<textarea name="textarea" cols="20" rows="10" >'.$row['beitrag'].'</textarea>';
 
hi,

danke für die prompte Antwort, das wars leider nicht (hab es sicherheitshalber probiert). ich wandle die Formularvariablen per Funkton in Variablen um.

Wie gesagt funktioniert es bei den Input-Boxen, nur nicht bei den Textareas. Weisst Du vielleicht woran das liegen könnte?

danke
 
puck77 hat gesagt.:
wandle die Formularvariablen per Funkton in Variablen
Ei ei ei. Erinnert mich irgendwie an Andi Möller: "Mailand oder Madrid, egal, hauptsache Italien".

Dein Code:
echo "<textarea name='textarea' cols='20' rows='10' >$row[beitrag]</textarea>";

Voodoo's Code:
echo '<textarea name="textarea" cols="20" rows="10" >'.$row['beitrag'].'</textarea>';

Auch probiert?
Wenn ja, dann liegts an deiner Variablen-in-Variablen-Umwandlung, deren Source du noch nicht gepostet hast.
 
hi,

leider half das Voodoo auch nichts, hab ich probiert - hab jetzt die Nadeln beiseite gelegt! :)

wenn Euch die Funktion hilft, also so bind ich sie ein:

PHP:
include("#_functions.inc");

$titel=PostVar("titel");
$beitrag=PostVar("beitrag");
$rubrik=PostVar("rubrik");
$link=PostVar("link");
$url=PostVar("url");
$status=$_POST['status'];
$datum=datum("now");
?>

und die #_functions.inc sieht so aus:

PHP:
function PostVar($variablen_name) {
  $ergebnis = $_POST[$variablen_name];
  if (get_magic_quotes_gpc()) $ergebnis = stripslashes($ergebnis);
  return trim($ergebnis);
}

hilft Euch das weiter?
 
Versende das Formular mit der HTTP-POST-Methode und verwende folgenden Quellcode zur Verfassen der Datenbankabfrage:
PHP:
<?php

	…
	$query = "
		UPDATE
		        blog
		  SET
		        `datum`   = NOW(),
		        `titel`   = '".mysql_real_escape_string($_POST['titel'])."',
		        `beitrag` = '".mysql_real_escape_string($_POST['beitrag'])."',
		        `rubrik`  = '".mysql_real_escape_string($_POST['rubrik'])."',
		        `link`    = '".mysql_real_escape_string($_POST['link'])."',
		        `url`     = '".mysql_real_escape_string($_POST['url'])."'
		  WHERE
		        `id`      = ".intval($_POST['id'])."
		";
	$result = mysql_query($query) or die(mysql_error());
	…

?>
Beim Ausgeben der Inhalte solltest du darauf achten, dass die „HTML-eigenen“ Zeichen zur Auszeichnung von Element-Deklarationen (kurz gesagt: < und >) als Zeichen-Referenzen ausgegeben werden. Dementsprechend empfehle ich dir folgende Formatierung:
PHP:
echo '<textarea name="textarea" cols="20" rows="10" >'.htmlspecialchars($row['beitrag']).'</textarea>';
 
danke allen miteinander,

aber so richtig klappts dennoch nicht.

während diese bescheidene Input-box funktioniert:
PHP:
echo '<input type="text" size="20" value='.$row[titel].' name="titel">';
gibt mir das textarea beim Schreiben folgende Meldung aus:
PHP:
echo '<textarea name="textarea" cols="20" rows="10" >'.$row['beitrag'].'</textarea>';

für den Fall dass ihr die ganze Datei sehen wollt (schön mutig von mir, die hier zu posten, ich weiss:( !)

PHP:
<?
$blog_title="Formular-befüllen";
include("mysql.inc");
include("#_functions.inc");

$titel=PostVar("titel");
$beitrag=PostVar("beitrag");
$rubrik=PostVar("rubrik");
$link=PostVar("link");
$url=PostVar("url");
$status=$_POST['status'];
$datum=datum("now");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><?= $blog_title ?></title>
</head>
<link rel="stylesheet" type="text/css" href="format.css" />
<body>
<?
$query="SELECT * FROM blog";
$sql=mysql_query($query);

while ($row=mysql_fetch_assoc($sql)){
echo "<form method='post' action='$_SERVER[PHP_SELF]'>";
echo "<input type='text' size='3' value='$row[id]' name='id'>";
echo "<input type='text' size='15' value='$row[datum]' name='datum'>";
echo "<input type='text' size='20' value='$row[titel]' name='titel'>";
echo '<textarea name="textarea" cols="20" rows="10" >'.$row['beitrag'].'</textarea>'; 
echo "<input type='text' size='15' value='$row[rubrik]' name='rubrik'>";
echo "<input type='text' size='10' value='$row[link]' name='link'>";
echo "<input type='text' size='10' value='$row[url]' name='url'>";
echo"<input type='submit' name='status' value='Eintragen' /><br/>";
echo "</form>";
}
if ($_POST['status']=="Eintragen"){
{
	$query="UPDATE blog SET
	datum=now(),
	titel='".addslashes($titel)."',
	beitrag='".addslashes($beitrag)."',
	rubrik='".addslashes($rubrik)."',
	link='".addslashes($link)."',
	url='".addslashes($url)."'
	WHERE id='$id'";
	$sql=mysql_query($query)
		or die(mysql_error());
}
}
?>
</body>
</html>

ps: möcht Euch aber nun nicht mehr länger aufhalten!
 
Zurück