<?php if (isset($_POST['zahl']) && $_POST['prozent'] != "") { if ($\_POST['zahl'] != "") {
$vk = mysql\_pconnect($host, $user, $pw)
or die ("Verindungsaufbau mit MYSQL-Server fehlgeschlagen!");
mysql\_select\_db($server, $vk)
or die ("Verindungsaufbau mit Datenbank ist fehlgeschlagen!");
$sql = "UPDATE Haube\_test SET '".$spalte."' = '".$zahl."'";
$result = mysql\_query($sql, $vk);
if ($result) {
echo " Datensatz geändert!";
} else {
echo " Keine Datenänderung!";
}
mysql\_free\_result($result);
mysql\_close($vk);
} else {
$vk = mysql\_pconnect($host, $user, $pw)
or die ("Verindungsaufbau mit MYSQL-Server fehlgeschlagen!");
mysql\_select\_db($server, $vk)
or die ("Verindungsaufbau mit Datenbank ist fehlgeschlagen!");
$sql = "UPDATE Haube\_test SET '".$spalte."' =
'".$spalte\*$prozent."'";
$result = mysql\_query($sql, $vk);
if ($result) {
echo " Datensatz geändert!";
} else {
echo " Keine Datenänderung!";
}
mysql\_free\_result($result);
mysql\_close($vk);
}
} else {
if (isset($\_POST['senden'])) {
echo "Bitte einen Wert eingeben!";
}
}
?\>
jedoch erfolgt keine Änderung der Datenbank
PHP Version 4.3.1
SQL Version 4.0.15
phpMyAdmin - 2.8.2
wo ist mein Gedankenfehler
ich denke in dieser Zeile
$sql = "UPDATE Haube\_test SET '".$spalte."' = '".$zahl."'";
finde Ihn aber einfach nicht
Recht herzlichen Dank
wolfgang
Längeren Quelltext bim nächsten Mal bitte in pre-Tags setzen,
ist leichter zu lesen.
ich werde mich bemühen!
Wenn du in deiner Fehlerbehandlung („Nicht geändert“) noch ein
echo "$sql: ".mysql_error() einfügst, bekommst du auch mit,
warum es nicht funktioniert hat und wie der an mySQL geschicke
Befehl aussah.
Vermutung: register_globals wird aus sein und damit $spalte
und $zahl leer, oben verwendest du doch auch $_POST, warum
hier nicht ?
danke jetzt weiß ich warum ich habe nicht die update sondern select Befehl
würdest du dann eher diesen Befehl schreiben
$sql = "UPDATE Haube_test SET $_POST[’$spalte’] = $_POST[’$zahl’];
Das du die Eingaben prüfen solltest, bzw. mit
mysql_real_escape_string evtl. „gefährliche“ Sonderzeichen
maskieren solltest um SQL-Injections zu vermeiden wurde schon
geschrieben.
ja das ist mir klar aber es gibt nur 3 Personen die auf diese Datei Passwortbeschrängt zugreifen dürfen daher sollte dies kein Problem sein
Das die Update-Zeile den Wert für ALLE Zeilen ändert ist dir
bewusst ? Evtl. fehlt da noch ein WHERE id=…
ja das ist mir bewußt es gibt in dieser Datei nur eine Zeile andere Dateien haben dann mehere da werde ich auch die ID nummer eingeben
der Befehl kann eigendlich nicht ganz stimmen fehlt da nicht noch am ende nach $zahl etwas?
ausserdem werde ich es jetz mal mit
$sql = "UPDATE Haube_test SET $_POST[’$spalte’] = $_POST[’$zahl’];
versuchen
zumindest wenn in $zahl einmal etwas anderes als Ziffern
steht, würde ich das drin lassen. Ansonten sind 2 $ zu viel
bei dem Array-Index.
also $zahl stehen nur Zahlen aber eine bescheidene andere frage
wäre es nicht besser nach erfolgten Datenbankänderung die Variablen zu leeren um eine Reloadfalle zu vermeiden?
frage
wäre es nicht besser nach erfolgten Datenbankänderung die
Variablen zu leeren um eine Reloadfalle zu vermeiden?
Beim Reload wird das Script sowieso „neu“ von Anfang an abgearbeitet, d.h. das Leeren der Variablen bringt an dieser Stelle nichts.
Einfachste Möglichkeit, das neu Senden der Daten zu verhindern, ist nach dem Speichern auf eine andere Seite / Das Formular zur Redirecten, weil dann wird nur diese Seite neu geladen, also im „Speichern“ Teil KEINE Ausgaben machen und per Header(„Location: formular.php“); wieder auf die Formularanzeige umleiten.
Komplizierte Variante ist das Übergeben einer Zufallszahl per hidden-Formularfeld. Diese Zahl muss man dann zusätzlich in der Session auf dem Server speichern und prüfen, ob diese Übereinstimmt. Mit jedem „Ausgeben“ des Formulars erzeugt man dann eine neue Zahl, so das diese Zufallszahl nur einmal zum Speichern benutzt werden kann.