Update von Daten mittel Formular

Diskutiere Update von Daten mittel Formular im MySQL Forum im Bereich Programmierung; Mit untenstehendem Programm kann ich mittels eines Formulars Variablen mit einem neuen Wert belegen. Nun möchte ich die Variablen in einer...
P

Pilo

Member
Dabei seit
12.11.2021
Beiträge
7
Mit untenstehendem Programm kann ich mittels eines Formulars Variablen mit einem neuen Wert belegen. Nun möchte ich die Variablen in einer MySQL-Datenbank unterbringen, etwa in einer Tabelle mit dieser Struktur:
id INT AUTO_INCREMENT PRIMARY KEY,
er varchar (15),
sie varchar (15)
Nach der Kommentarzeile CONNECT sollte dann die Verbindung zu der Tabelle gemacht werden. Die Zeile nach UPDATE müßte die Variablen in der Tabelle ändern (updaten) und die Zeile nach SELECT die aktuellen Daten einer vorgegebenen ID aus der Tabelle auslesen.
Mein Problem: Ich komme mit der MySQL-Syntax nicht zurecht und kriege bei all meinen Versuchen leediglich Fehlermeldungen...
Kann mir jemand helfen?

<?php
// CONNECT
if (!empty($_POST)) {
// UPDATE
$er=$_POST['er']; $sie=$_POST['sie'];}
else {
// SELECT
$er="Emil"; $sie="Lisa"; }
echo "<h2>".$er." liebt ".$sie."</h2>";
?>
<form method="post">
Er:<br>
<input type='text' name='er' value='<?php echo $er ?>'><br>
Sie:<br>
<input type='text' name='sie' value='<?php echo $sie?>'><br><br>
<input type="submit" value="&nbsp;OK&nbsp;">
</form>
 
S

scatello

Well-known member
Dabei seit
21.12.2020
Beiträge
181
P

Pilo

Member
Dabei seit
12.11.2021
Beiträge
7
Mein Versuch mit MySgl beginnt so:
1 <?php
2 mysql_connect("localhost", "root","usbw") or die ("Verbindung nicht möglich");
3 mysql_select_db("test") or die ("Datenbank existiert nicht");
4 if (!empty($_POST)) {
5 $er = $_POST['er'];
6 $sie = $_POST['sie'];
7 $sql= "UPDATE 'Members' SET er='$er' sie='$sie' WHERE id='1'"; }
und liefert bereits in Zeile 5 folgende Fehlermeldung:
Notice: Undefined index: er in D:\! Web\root\test\dbase.php on line 5
 
S

scatello

Well-known member
Dabei seit
21.12.2020
Beiträge
181
P

Pilo

Member
Dabei seit
12.11.2021
Beiträge
7
Nicht meine PHP-Version ist veraltet, sondern die Bücher, aus denen ich meine Kenntnis bezogen habe. Vielen Dank für den Hinweis.
Inzwischen habe ich mein Progrämmchen angepaßt (und auch noch von Schreibfehlern bereinigt).
Alles funktioniert - mit Ausnahme des wichtigsten Teils: UPDATE (Zeile 6).
Ich wäre Dir sehr dankbar, wenn Du mir sagen könntest, was da stehen muß?

Code:
<?php
$mysqli = new mysqli("localhost", "root", "usbw", "test");
if (!empty($_POST)) {
   $er  = $_POST['er'];
   $sie = $_POST['sie'];
   $sql="UPDATE members SET er='$er'  sie='$sie' WHERE id='1'";}
$result = $mysqli->query("SELECT * FROM `Members` WHERE id='1'");
$row = $result->fetch_assoc();
echo "<h2>".$row['er']." liebt ".$row['sie']."</h2>";
?>
<form method="post">
   Er:<br>
   <input type='text' size='20' name='er' value='<?php echo $row["er"]?>'><br>
   Sie:<br>
   <input type='text' size='20' name='sie' value='<?php echo $row["sie"]?>'><br><br>
   <input type="submit" value=" OK ">
</form>

PS: Wie Du siehst, habe ich nun begriffen, wie man Code eingibt.
 
S

scatello

Well-known member
Dabei seit
21.12.2020
Beiträge
181
Zuletzt bearbeitet:
P

Pilo

Member
Dabei seit
12.11.2021
Beiträge
7
Zeile 6 lautet nun
Code:
$mysqli->query("UPDATE members SET er='$er' sie='$sie' WHERE id='1'"); }
Aber die Daten werden noch immer nicht geändert.
 
S

scatello

Well-known member
Dabei seit
21.12.2020
Beiträge
181
Dann wird es Zeit für:

Richtig debuggen
  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
basti1012

basti1012

Well-known member
Dabei seit
12.06.2018
Beiträge
154
Ich musste 2 Wochen Zwangsurlaub machen und habe auch wieder viel verlernt.
Ich meine aber auch das bei mehreren Spalten Updates ein Komma zwischen den einzelnen Spalten befehle kommen.
so vieleicht
PHP:
$mysqli->query("UPDATE `members` SET `er`='$er',`sie`='$sie' WHERE `id`='1'");
Kann aber auch sein das mein Gehirn ein Schaden bekommen hat
 
P

Pilo

Member
Dabei seit
12.11.2021
Beiträge
7
Dein Gehirn, Basti1012, tut es noch prima. Und so habe ich mit zwei Kommas (und besser Aufpassen beim Groß- und Kleinschreiben von Variablen) mein Progrämmchen ans Laufen gebracht. Mit Dank an Dich und Scatello hier die endgültige Fassung:
Code:
<?php
$mysqli = new mysqli("localhost", "root", "usbw", "test");
if (!empty($_POST)) {
   $er  = $_POST['er'];
   $sie = $_POST['sie'];
   $mysqli->query("UPDATE member SET Er='$er', Sie='$sie' WHERE id='1'"); }
$result = $mysqli->query("SELECT * FROM member WHERE id='1'");
$row = $result->fetch_assoc();
echo "<h2>".$row['Er']." liebt ".$row['Sie']."</h2>";
?>
<form method="post">
   Er:<br>
   <input type='text' size='20' name='er' value='<?php echo $row["Er"]?>'><br>
   Sie:<br>
   <input type='text' size='20' name='sie' value='<?php echo $row["Sie"]?>'><br><br>
   <input type="submit" value=" OK ">
</form>
 
P

Pilo

Member
Dabei seit
12.11.2021
Beiträge
7
Danke für den Hinweis. Folgende Änderung sollte - denke ich - genügen:
Code:
$er  = mysql_real_escape_string($_POST['er']);
$sie = mysql_real_escape_string($_POST['sie']);
 
P

Pilo

Member
Dabei seit
12.11.2021
Beiträge
7
Ok, dann noch dies improvement (um dem "i" in mysqli gerecht zu werden):
Code:
   $er  = $mysqli->real_escape_string($_POST['er']);
   $sie = $mysqli->real_escape_string($_POST['sie']);
 
Thema:

Update von Daten mittel Formular

Oben