Daten werden nicht übergeben :-(
Stanload
- php
Hallöchen!
Ich möchte in einem Formular Daten ändern.
Zunächst lese ich mir die Daten alle aus und stelle sie ins Formular ein (kommen auch alle richtig an), anschließend schicke ich sie in eine neue Datei, wo die Daten dann auf der Datenbank geändert werden sollen.
Hier einmal der Aufbau der ersten Datei:
<body>
<?php
$idver = $HTTP_GET_VARS['id'];
$abfragen = "SELECT * FROM table WHERE id LIKE $idver";
$ergebnis = mysql_query($abfragen);
while ($listen = mysql_fetch_object($ergebnis))
{ $liste = $listen; }
?>
<form name="change" method="post" action="change_confirm.php">
<table cellspacing="1">
<tr>
<th id="re">Name</th>
<td class="oben" id="li"><input size="25" maxlength="100" name="name" value="<?php echo "$liste->name"; ?>"></td>
</tr>
<tr>
<th id="re">Wohnort</th>
<td class="oben" id="li"><input size="25" maxlength="100" name="place" value="<?php echo "$liste->place"; ?>"></td>
</tr>
</table>
</center>
<center>
<input type="submit" value="ändern">
</center>
</form>
in der change_confirm.php steht dann:
<?php
$id_g = $HTTP_POST_VARS["id"];
$name = $HTTP_POST_VARS["name"];
$place = $HTTP_POST_VARS["place"];
$aenderung = "UPDATE table Set name = '$name', place = '$place' WHERE id= '$id_g'";
$aendern = mysql_query($aenderung);
mysql_close($connect);
?>
Irgendwie hab ich schon das Gefühl, dass die Daten nicht übergeben werden.
Könnte mir wer weiterhelfen?
Stanload
Hi,
$idver = $HTTP_GET_VARS['id'];
$_GET['id'] ?
<th id="re">Name</th>
<th id="re">Wohnort</th>
Zweimal die selbe id, das ist in HTML nicht zulässig.
$id_g = $HTTP_POST_VARS["id"];
$name = $HTTP_POST_VARS["name"];
$place = $HTTP_POST_VARS["place"];
$_POST["id"], ...
Irgendwie hab ich schon das Gefühl, dass die Daten nicht übergeben werden.
Warum überprüfst Du das nicht, indem Du sie einfach ausgibst?
cu,
Andreas
Hallo!
$idver = $HTTP_GET_VARS['id'];
$_GET['id'] ?
Hier hat das $HTTP_GET_VARS geklappt, zumindest kam die id an, denn damit habe ich ja in der DB den Satz ausgelesen. Oder meinst Du dies eher als Verbesserungsvorschlag? Wo liegt der Unterschied?
<th id="re">Name</th>
<th id="re">Wohnort</th>Zweimal die selbe id, das ist in HTML nicht zulässig.
Wie? Hinter id="re" habe ich in einer css-Datei hinterlegt, dass es rechtsbündig sein soll, funktioniert zumindest so bei mir.
$id_g = $HTTP_POST_VARS["id"];
$name = $HTTP_POST_VARS["name"];
$place = $HTTP_POST_VARS["place"];
$_POST["id"], ...
Wo ist da der Unterschied, wenn ich fragen darf *g*?
Warum überprüfst Du das nicht, indem Du sie einfach ausgibst?
Mit echo "§name"; kommt leider nichts aud den Bildschirm :-(.
Hi,
<th id="re">Name</th>
<th id="re">Wohnort</th>
Zweimal die selbe id, das ist in HTML nicht zulässig.
Wie? Hinter id="re" habe ich in einer css-Datei hinterlegt, dass es rechtsbündig sein soll, funktioniert zumindest so bei mir.
Wenn das in Deinem Browser zufällig funktioniert, ist das noch lange nicht richtig.
In wie vielen Browsern hast Du es denn getestet? In allen?
Kannst Du ausschließen, daß das in keinem Browser nicht funktioniert?
Wenn Du MEHRERE Elemente identisch formatieren willst, benutze eine Klasse.
Das id-Attribut dient zum Identifizieren von Elementen.
$place = $HTTP_POST_VARS["place"];
$_POST["id"], ...
Wo ist da der Unterschied, wenn ich fragen darf *g*?
Soweit ich weiß, wird $HTTP_POST_VARS irgendwann nicht mehr unterstützt...
Mit echo "§name"; kommt leider nichts aud den Bildschirm :-(.
Hm. Da sollte eigentlich §name ausgegeben werden. Oder meintest Du echo "$name"; (mit $ statt §)?
cu,
Andreas
In wie vielen Browsern hast Du es denn getestet? In allen?
Kannst Du ausschließen, daß das in keinem Browser nicht funktioniert?
Wenn Du MEHRERE Elemente identisch formatieren willst, benutze eine Klasse.
Das id-Attribut dient zum Identifizieren von Elementen.
Bis jetzt nur im IE, welchen 95% meiner Besucher nutzen.
OK, mit den Klassen und ID schaue ich mir noch einmal an. Ich meine es damals nicht hinbekommen zu haben, in der Klasse zu sagen, dass es rechtbündig sein soll *nachdenk*.
Hm. Da sollte eigentlich §name ausgegeben werden. Oder meintest Du echo "$name"; (mit $ statt §)?
So, hab alles geändert, bekomme die Daten auch angezeigt, nur klappt es nicht mit dem Update :-(.
Ich bin ja so blöd!
Wenn ich nur ein Feld updaten möchte, klappt das nun so:
$aenderung = "UPDATE table Set name = '$name' WHERE id= '$id_g'";
$aendern = mysql_query($aenderung);
Wenn ich aber mehrere Felder habe, kann man das nicht wie beim INSERt machen, von wegen?
$aenderung = "(UPDATE table (name, place) VALUES ('$name', '$place)";
Hi,
Wenn ich nur ein Feld updaten möchte, klappt das nun so:
$aenderung = "UPDATE table Set name = '$name' WHERE id= '$id_g'";
$aendern = mysql_query($aenderung);
Wenn ich aber mehrere Felder habe, kann man das nicht wie beim INSERt machen, von wegen?
$aenderung = "(UPDATE table (name, place) VALUES ('$name', '$place)";
Warum guckst Du die Syntax nicht einfach im Handbuch Deiner Datenbank nach?
cu,
Andreas
Hallöchen!
Ich möchte in einem Formular Daten ändern.
Zunächst lese ich mir die Daten alle aus und stelle sie ins Formular ein (kommen auch alle richtig an), anschließend schicke ich sie in eine neue Datei, wo die Daten dann auf der Datenbank geändert werden sollen.Hier einmal der Aufbau der ersten Datei:
<body><?php
$idver = $HTTP_GET_VARS['id'];$abfragen = "SELECT * FROM table WHERE id LIKE $idver";
$ergebnis = mysql_query($abfragen);while ($listen = mysql_fetch_object($ergebnis))
{ $liste = $listen; }
?><form name="change" method="post" action="change_confirm.php">
<table cellspacing="1">
<tr>
<th id="re">Name</th>
<td class="oben" id="li"><input size="25" maxlength="100" name="name" value="<?php echo "$liste->name"; ?>"></td>
</tr>
<tr>
<th id="re">Wohnort</th>
<td class="oben" id="li"><input size="25" maxlength="100" name="place" value="<?php echo "$liste->place"; ?>"></td>
</tr>
</table>
</center><center>
<input type="submit" value="ändern">
</center></form>
in der change_confirm.php steht dann:
<?php
$id_g = $HTTP_POST_VARS["id"];
$name = $HTTP_POST_VARS["name"];
$place = $HTTP_POST_VARS["place"];$aenderung = "UPDATE table Set name = '$name', place = '$place' WHERE id= '$id_g'";
$aendern = mysql_query($aenderung);mysql_close($connect);
?>Irgendwie hab ich schon das Gefühl, dass die Daten nicht übergeben werden.
Könnte mir wer weiterhelfen?
Stanload
Moin,
Frage doch mal ab was mit Post ankommt
print_r ($_POST);
Und dan woher weisst Du den mit der id Bescheid?
Gibs da ein Hiddenfeld?
TomIRl
Hallo!
Moin,
Frage doch mal ab was mit Post ankommt
print_r ($_POST);
Array ( [name] => Stanload [place] => Town [bdate] => 0000-00-00 [bplace] => Town )
Und dan woher weisst Du den mit der id Bescheid?
Gibs da ein Hiddenfeld?
Versteh ich nicht so ganz, was Du mit dem Hidden meinst, aber auf jeden Fall scheint es ja zu stimmen, dass die id nicht übergeben wird.
»
Versteh ich nicht so ganz, was Du mit dem Hidden meinst, aber auf jeden Fall scheint es ja zu stimmen, dass die id nicht übergeben wird.
?
<input type="hidden" name=id value="<?php print ("$_GET[id]")?>"
Vielleicht so?
Das Formular schickt doch nur die Daten ab, die Du im Formuar hast und die id ist nicht da!
TomIRl
<input type="hidden" name=id value="<?php print ("$_GET[id]")?>"
OK, ich hab daraus dann mal folgendes gemacht, und es klappt:
<input name="id" type="hidden" value="<?php echo "$liste->id"; ?>">
Das Formular schickt doch nur die Daten ab, die Du im Formuar hast und die id ist nicht da!
Array ( [id] => 1 [name] => Stanload [place] => Town )
So, aber das Update scheint nicht zu funktionieren :-(.
hi,
$aenderung = "UPDATE table Set name = '$name', place = '$place' WHERE id= '$id_g'";
$aendern = mysql_query($aenderung);
wo ist hier deine ausgabe eventueller fehler der datenbank zu debugging-zwecken?
schreibe stattdessen
$aenderung = "UPDATE table Set name = '$name', place = '$place' WHERE id= '$id_g'";
echo $anderung; // zur kontrolle, ob i query string auch wirklich das drin steht was du erwartest
$aendern = mysql_query($aenderung) or die(mysql-error()); // damit dir eventuelle fehlermeldungen der DB auch angezeigt werden.
gruss,
wahsaga
hi,
$aendern = mysql_query($aenderung) or die(mysql-error());
sorry, es muss natürlich mysql_error() heissen in der klammer.
gruss,
wahsaga