Datenbank Update

puschelchen

Erfahrenes Mitglied
Hallo guten Morgen,
ich hab ein Problem mit Datensätze ändern
derzeit sieht mein Code so aus:
PHP:
<html>
<body>
<form action="" method="GET">
<div align="right"/>
Userid <input type="text" name="Userid"><br>
Vorname<input type="text" name="Vorname"><br>
Nachname <input type="text" name="Nachname"><br>
Firma <input type="text" name="Firma" ><br>
Email<input type="text" name="Email" ><br>
Telefon<input type="text" name="Telefon"  ><br>
Laufzeit<input type="text" name="Laufzeit"><br>
Lizenz PC <input type="text" name="PCLizenzen"  ><br>
Seriennummer <input type="text" name="dpSrn"  ><br>
Datum Aktiv <input type="text" name="DatumAktiv"  ><br>
Datum End Aktiv <input type="text" name="DatumEndAktiv"   ><br>
<input type=submit name=submit value="Formular absenden"><br>
<?php
$Userid="";
$Host = "localhost";
$User = "david";
$Password = "a";
$dbname = "ABMC-Datenbank";
$tbl="Kunden";
mysql_connect('localhost', 'david', 'a') or die  ("Keine Verbindung möglich: ".mysql_error());
mysql_select_db($dbname) or die  ("Keine Verbindung möglich: ".mysql_error());
        if(isset($_GET['submit'])) {
mysql_select_db($dbname);
mysql_query('UPDATE $tbl SET Vorname=$_GET["Vorname"] WHERE Userid=$_GET["Userid"]');
}
mysql_close();
?>
</div>
</form>
</body>
</html>
die Daten werden nicht übernommen. Ich hoff ihr habt nen Vorschlag was falsch läuft.
 
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.

Nunja, ich kann dir noch den Tipp gebe, dass Strings die in einfache ' gefasst sind, nicht kompliert werden - also Variabeln darin werden nicht mit dem Variableninhalt überschreiben.
 
ich hab vorher update anders geschrieben
mysql_query("UPDATE $tbl SET Vorname=$_GET['Vorname'] WHERE Userid=$_GET['Userid']");
Nur kommt hier die Fehlermeldung wegen "
auch mit error_reporting ist dort kein Fehler bzw wird keiner angezeigt.
 
PHP:
<html>
<body>
<form action="" method="GET">
<div align="right"/>
Userid <input type="text" name="Userid" value="<?php echo @$_GET['Userid'] ?>"><br>
Vorname<input type="text" name="Vorname" value="<?php echo @$_GET['Vorname'] ?>"><br>
Nachname <input type="text" name="Nachname" value="<?php echo @$_GET['Nachname'] ?>"><br>
Firma <input type="text" name="Firma" value="<?php echo @$_GET['Firma'] ?>"><br>
Email<input type="text" name="Email" value="<?php echo @$_GET['Telefon'] ?>"><br>
Telefon<input type="text" name="Telefon" value="<?php echo @$_GET['Telefon2'] ?>" ><br>
Laufzeit<input type="text" name="Laufzeit"value="<?php echo @$_GET['Laufzeit'] ?>"><br>
Lizenz PC <input type="text" name="PCLizenzen" value="<?php echo @$_GET['PCLizenzen'] ?>" ><br>
Seriennummer <input type="text" name="dpSrn" value="<?php echo @$_GET['dpSrn'] ?>" ><br>
Datum Aktiv <input type="text" name="DatumAktiv" value="<?php echo @$_GET['DatumAktiv'] ?>" ><br>
Datum End Aktiv <input type="text" name="DatumEndAktiv" value="<?php echo @$_GET['DatumEndAktiv'] ?>"  ><br>
<input type=submit name=submit value="Formular absenden"><br>
<?php
if (isset($_GET)  {
    $Host = "localhost";
    $User = "david";
    $Password = "a";
    $dbname = "ABMC-Datenbank";
    $tbl="Kunden";
    mysql_connect('localhost', 'david', 'a') or die  ("Keine Verbindung möglich: ".mysql_error());
    mysql_select_db($dbname) or die  ("Keine Verbindung möglich: ".mysql_error());
$Vorname=$_GET["Vorname"];
mysql_query('UPDATE $tbl SET $Vorname WHERE Userid=$_GET["Userid"]');
}
mysql_close();
?>
</div>
</form>
</body>
</html>
So sieht mein derzeitiger Code aus wenn ich in die Browserzeile eingeb
dbaendern.php?Userid=4&Vorname=Dave steht es zwar nun im Formular aber nicht in der Datenbank.
 
Mach doch mal

PHP:
mysql_query("UPDATE $tbl SET Vorname=$_GET['Vorname'] WHERE Userid=$_GET['Userid']") or die(mysql_error());

Dann wirst du vermutlich eine Fehlermeldung bekommen, das bei der Spalte Vorname die Quotes fehlen.
 
ich bekomm weder ne Fehlermeldung noch einen Eintrag
ach schon klar hab grad die falsche datei geöffnet tschuldigung +lol+
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /srv/www/htdocs/dbaendern2.php on line 29
ich sagte doch hab ' und " ausgetauscht ^^
 
Zuletzt bearbeitet:
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.
Mehr gibts da nicht zu sagen wenns mit " nicht geht. Aber dieses Tutorial kannst du ja sicher langsam auswendig und weisst also selber wie du auf Fehlersuche gehen kannst.
 
Versuch es doch mal durch einen kleinen Umweg:

PHP:
$query = 'UPDATE $tbl SET Vorname=$_GET["Vorname"] WHERE Userid=$_GET["Userid"]'; 
mysql_query($query);
if( mysql_affected_rows() == 0)
{
  echo "Der Query hat keine Zeilen geändert:<br/><pre>$query</pre>";
}

Wenn die Meldung unten kommt, kannst du den Query in phpMyAdmin einfügen und dann wirst du sehen, was nicht aus welchem Grund nicht geht.

Das ist übrigens ein allgemeines Verfahren wenn es um das Debuggen von MySQL-Problemen geht und mit sehr großer Sicherheit auch in yaslaw's Tutorial so beschrieben.

Wenn du das wieder verwenden willst, kannst du eine Funktion draus machen:

PHP:
function mysql_update($query)
{
  mysql_query($query);
  if( mysql_affected_rows() == 0)
  {
    echo "Der Query hat keine Zeilen geändert:<br/><pre>$query</pre>";
  }
}

// Achtung hier dann kein mysql_query sonder mysql_update
mysql_update('UPDATE $tbl SET Vorname=$_GET["Vorname"] WHERE Userid=$_GET["Userid"]');

Das kannst du dann auch für Inserts und Deletes machen.

@yaslaw: Spätestens beim zweiten mal ignorieren würde ich es dann auch aufgeben, nicht jeder will ein Tutorial lesen, egal wie lang es ist.
 
Zuletzt bearbeitet:
ich hab nun die abfrage auch umgebaut
$Vorname=$_GET['Vorname'];
$Userid=$_GET['Userid'];
mysql_query('UPDATE Kunden SET Vorname=$Vorname WHERE Userid = $Userid') or die(mysql_error());

jetzt hab ich ja auch ne andere Fehlermeldung aber den Fehler krieg ich schon noch raus. :)
 
Zurück