Problem mit auslesen und updaten der db

hoctar

Erfahrenes Mitglied
Hallo :)
Ich will meine DB updaten mit den daten die in das formular eingetragen wurden und danach sollen die daten im text feld stehen.
Geht aber nicht :( und da kommt auch keine fehler meldung ..

Hier ist der code:
PHP:
<?php
$send = $_POST["submit"];
$xachse =$_POST["xachse"];
$yachse =$_POST["yachse"];

$abfrage = "SELECT * FROM user WHERE id = ".$_SESSION["user_id"]."";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_array($ergebnis); 

  $xachse = $row['xachse']; 
  $yachse = $row['yachse']; 


if ($send=="Speichern")
 {
mysql_query("UPDATE `user` SET `xachse` = '".$xachse."', `yachse`= '".$yachse."' WHERE `id` = '".$_SESSION['user_id']."'");
 }
?>

<form action="index.php?page=xytext" method="post">
xAchse:<input type="text" name="xachse" value="<?php echo $yachse; ?>">
yAchse:<input type="text" name="yachse" value="<?php echo $yachse; ?>">
<input type="submit" name="submit" value="Speichern">

</form>
 
Is klar, das da keine Fehlermeldung kommt, du lässt es ja auch nicht zu :-)

Schreibe dein Script mal um, das mysql_error() zum tragen kommt:

$ergebnis = mysql_query( ... ) or die(mysql_error());

Desweiteren ist der Fehler vermutlich schon in deinem Query:

PHP:
$abfrage = "SELECT * FROM user WHERE id = '".$_SESSION["user_id"]."'";

Man beachte die einfachen Anführungszeichen (Single-Quotes) bei der ID,
 
Es trägt leider immer noch nicht in die db ein ... und ne fehlermeldung kommt auch nicht ..:(
wenn ich was eintrage und auf speichern drücke aktualisiert sich die seite aber die daten sind nicht in der db
Hier nochmal der aktuelle code:
PHP:
$send = $_POST["submit"];
$xachse =$_POST["xachse"];
$yachse =$_POST["yachse"];

$abfrage = "SELECT * FROM users WHERE id = '".$_SESSION["user_id"]."'";
$ergebnis = mysql_query($abfrage) or die(mysql_error());
$row = mysql_fetch_array($ergebnis); 

  $xachse = $row['xachse']; 
  $yachse = $row['yachse']; 


if ($send=="Speichern")
 {
mysql_query("UPDATE `users` SET `xachse` = '".$xachse."', `yachse`= '".$yachse."' WHERE `id` = '".$_SESSION['user_id']."'");
 }
?>

<form action="index.php?page=xytext" method="post">
xAchse:<input type="text" name="xachse" value="<?php echo $xachse; ?>">
yAchse:<input type="text" name="yachse" value="<?php echo $yachse; ?>">
<input type="submit" name="submit" value="Speichern">

</form>
 
Warum machst Du statt if ($send=="Speichern") nicht einfach if (isset($_POST["submit"])?
Und hast Du schon mal überprüft, ob $send überhaupt den Wert "Speichern" enthält?
Und lass Dir doch mal Dein Update Query per echo ausgeben und versuch mal den Query direkt an die DB per phpMyAdmin abzusetzen, um zu sehen, ob der korrekt ist.
 
Mal so von der Logik...

  • Du übernimmst Variablen von POST und schreibst sie in $xachse, $yachse
  • Du selectest die aktuellen daten aus der Datenbank und schreibst die Datenbank werte in $xachse, $yachse
  • Du nimmst $xachse, $yachse und schreibst die werte in die Datenbank
  • Du schreibst du Forumar und verwendest $xachse, $yachse als Standartwerte

Fehler gesehen?

Schritt 2 und 3 machen in dieser Reihenfolge keinen Sinn :>

Du updatest einfach noch einmal die Daten aus der Datenbank in die Datenbank. Sonst scheint alles zu stimmen. Darum auch keine Fehlermeldung. Ist ja auch kein Programmierfehler sondern ein Logikfehler.
 
Zuletzt bearbeitet:
Das Update greift doch nur, wenn $send WAHR ist, sonst überspringt das doch die if-abfrage.

Der Fehler liegt ganz woanders *vermut*:
Die SELECT-Abfrage ist OHNE ein LIMIT, was bedeuten kann, dass wenn mehrere datensätze vorhanden sind, man natürlich ein Array bekommt, und keine Werte. also an das SELECt einfach ein "LIMIT 1" dranhängen, und dann nochmal testen ;)

LG
Andy
 
Sorry @Napofis, aber Deine andere Schreibweise ändert doch nix an seinem eigentlichem Problem, dass nach seinem SELECT die Variablen leer sind *g
 
irgendwie will das auch nicht ... wie könnte man es denn noch machen .. ich will ja nur das was das formular abschickt, in der DB haben :(
 
Zurück