Update-Funktion für Datenbank will nicht

Knille

Grünschnabel
Hallo erstmal,

ich hoffe ich finde mit Eurer Hilfe die Lösung für mein Problem.
Ich habe eine MySQL-Datenbank. Bei der Ausgabe der Datenbank in eine HTML-Tabelle wird in die letzte Spalte des Datensatzen ein Link zum löschen und einer zum Editieren gesetzt.
Klicke ich auf editieren, wird der Datensatz erfolgreich in ein Formular geladen, wobei jeder Wert ein eigenes Textfeld bekommt. Dort kann ich nun andere Daten eingeben.
Die Ausgabe erfolgt über folgenden Code :

PHP:
    $sql = "select * from vermietung where nummer=$what";
    $erg = mysql_query ($sql);
    echo "<table><tr>";
    while ($row = mysql_fetch_row ($erg))
    {
           echo "<tr>";
              $id=$row[0];
              echo "<tr><td>Titel:</td><td><input type=text size='90' value=\"".$row[1]."\" name=\"".mysql_field_name($erg, 1)."\"></td></tr>";
              echo "<tr><td>Räume:</td><td><input type=text size='90' value=\"".$row[2]."\" name=\"".mysql_field_name($erg, 2)."\"></td></tr>";
              echo "<tr><td>Quadratmeter:</td><td><input type=text size='90' value=\"".$row[3]."\" name=\"".mysql_field_name($erg, 3)."\"></td></tr>";
              echo "<tr><td>Beschreibung:</td><td><input type=text size='90' value=\"".$row[4]."\" name=\"".mysql_field_name($erg, 4)."\"></td></tr>";
              echo "<tr><td>PLZ:</td><td><input type=text size='90' value=\"".$row[5]."\" name=\"".mysql_field_name($erg, 5)."\"></td></tr>";
              echo "<tr><td>Ort:</td><td><input type=text size='90' value=\"".$row[6]."\" name=\"".mysql_field_name($erg, 6)."\"></td></tr>";
              echo "<tr><td>Mietpreis:</td><td><input type=text size='90' value=\"".$row[7]."\" name=\"".mysql_field_name($erg, 7)."\"></td></tr>";
           echo "</tr>";
    }
    echo "</table>";
    echo "<td><a href=\"vm.php?submit=update&table=vermietung&what=".$id."\">Editieren</a></td>";
}

Mit

PHP:
\"".mysql_field_name($erg, 7)."\"
wird dem Textfeld der Name des Tabellenfeldes zugewiesen. Das funktioniert auch. Die Namen sind dann titel, rooms, qm, beschr, plz, ort und mietpreis.

Nach der Änderung der Daten in den Textfeldern sollen nun über einen Link "Editieren" die Daten in der entsprechende Zeile geändert werden. Die update-Funktion habe ich in die selbe php-Datei gepackt wie die Funktion, die die Daten aus der DB ausliest und in die Textfelder schreibt.
Hinter dem Link verbirgt sich folgender php-Code :

PHP:
echo_"<td><a href=\"vm.php?submit=update&table=vermietung&what=".$id."\">Editieren</a></td>";

Die ID übergibt den Primärschlüssel damit auch der entsprechende Datensatz geändert wird.
Wenn ich auf diesen Link klicke soll folgendes ausgeführt werden :

PHP:
if ($submit == "update")
{
   $res="UPDATE vermietung SET titel=$titel, rooms=$rooms, qm=$qm, beschr=$beschr, plz=$plz, ort=$ort, mietpreis=$mietpreis WHERE nummer = '$what'";
   mysql_query($res, $db);
}
Die Variable $what wird auch korrekt übergeben, nur werden die Einträge in der Datenbank nicht abgeändert.

Woran kann das liegen ?
 
$res="UPDATE vermietung SET titel='$titel', rooms='$rooms', qm='$qm', beschr='$beschr', plz='$plz', ort='$ort', mietpreis='$mietpreis' WHERE nummer = '$what'";


mysql_query($res, $db) or die(mysql_error());

versuch mal die version
 
Vielen Dank.
Nur leider übernimmt er jetzt nicht die Werte aus den Textfeldern. Es wird alles gelöscht. Ausser der ID (Primärschlüssel) ist alles andere leer .... :confused: :confused:
 
wer lesen kann ist klar im vorteil ...

erst jetzt sehe ich das du das script über ein link aufrufst ... klar gehen dabei alle daten flöten :-)

du musst im link alle daten übergeben

oder du sagt deinem formular das er das updatescript aufrufen soll
 
OK, hab ich hab den Link so erweitert :

PHP:
<a href=\"vm.php?submit=update&table=vermietung&what=".$id."&titel=".$titel."&rooms=".$rooms."&qm=".$qm."&beschr=".$beschr."&plz=".$plz."&ort=".$plz."&ort=".$ort."&mietpreis=".$mietpreis."\">

Trotzdem werden die Daten nicht übernommen ... :confused:
 
mh.
lass einfach mal bei deinem sql_query die connection sachen weg.

also nicht
PHP:
$blub=mysql_query($sql, $db);
sondern:
PHP:
$blub=mysql_query($sql);
sollte, sofern vorher shcon mal eine nicht gekillte verbindung bestanden hat funzen, war jedenfalls bei mir letztens so..

ausserdem habe ich auch gehört, dass einige leute vor einen
PHP:
mysql_query
ein @ machen müssen. also
PHP:
$blub=@mysql_query
das ist allerding bei mir noch nciht aufgetreten.
 
mach doch mal vorm query ein debug echo rein:

echo "<hr>$sql<hr>";

und

$blub=mysql_query($sql) or die(mysql_error());

und beides mal posten :-)
 
Danke an alle für Eure Hilfe. :)

Jetzt funktionierst. Ich bin dahintergestiegen worans lag :

Und zwar beim auslesen des Datensatzes ins Formular hab ich bloss am Anfang

PHP:
echo "<form>";

und am Ende

PHP:
echo "</form>";

vergessen. *vornkopfschlag*
 
Zurück