Jetzt anmelden...

Login
Passwort
Registrieren

PHP Tutorial #27

MySQL-Datensätze mit PHP bearbeiten

Nachdem wir im letzten Kapitel gelernt haben, wie man mithilfe von PHP Daten aus einer MySQL-Tabelle herauslesen kann, gehen wir nun einen Schritt weiter. Es soll jetzt darum gehen, wie wir Datensätze einer MySQL-Tabelle hinzufügen, bearbeiten oder löschen können. Das alles über die Nutzereingabe mittels HTML-Formular und PHP versteht sich.

Kommentare [3] 3902 Views

Stefan 08.06.2019

Infos zum Artikel

Kategorie PHP
Autor Stefan
Datum 25.04.2018

Kapitel in Kurzform:

//Daten aus Formular abholen und in Tabelle eintragen:

    $eingabe = $_POST["nutzereingabe"];
    $insertString = "INSERT INTO tabelle (spalte) VALUES ('$eingabe');";
    mysqli_query($connect, $insertString);
//Datensatz verändern (entsprechend Nutzereingabe)

    $eingabe = $_POST["nutzereingabe"];
    $id = $_POST["ausgewählteID"];
    $update = "UPDATE tabelle SET spalte ='$eingabe' WHERE id = $id";
    mysqli_query($connect, $update);
//Ausgewählten Datensatz löschen

    $id = $_POST["ausgewählteID"];
    $deleteAnweisung = "DELETE FROM tabelle WHERE id = $id";
    mysqli_query($connect, $deleteAnweisung);

    Inhaltsverzeichnis

  1. Ausgangslage
  2. Neuen Datensatz hinzufügen
  3. Einen Datensatz bearbeiten
  4. Datensatz löschen
  5. Übungen

Ausgangslage

Wir erklären dieses Thema anhand einer SQL-Tabelle, die Bücher als Datensätze speichert. Wir importieren hierzu die Tabelle buecher.sql in unsere Datenbank und verschaffen uns einen Überblick mit der Abfrage SELECT * FROM buecher:

+----+---------------------------------------+---------------------+------------------+-----------+
| id | titel                                 | autor               | erscheinungsjahr | bewertung |
+----+---------------------------------------+---------------------+------------------+-----------+
|  1 | Don Quijote                           | Miguel de Cervantes |             1615 | ****      |
|  2 | Der Herr der Ringe                    | John R. R. Tolkien  |             1955 | *****     |
|  3 | Harry Potter und der Stein der Weisen | Joanne K. Rowling   |             1997 | ****      |
|  4 | Der Alchimist                         | Paulo Coelho        |             1988 | *****     |
|  5 | Sakrileg - Der Da Vinci Code          | Dan Brown           |             2003 | ***       |
|  6 | Der Adler ist gelandet                | Jack Higgins        |             1975 | ****      |
|  7 | Der Name der Rose                     | Umberto Echo        |             1980 | *****     |
|  8 | Faust - der Tragödie erster Teil      | J.W. Goethe         |             1808 | *****     |
+----+---------------------------------------+---------------------+------------------+-----------+
8 rows in set (0,00 sec)                    

Im letzten Kapitel haben wir bereits gelernt, wie wir Datensätze einer SQL-Tabelle im Browser ausgeben können. Wir greifen auf dieses Wissen nun zurück.

In der Datei buecher.php geben wir alle Datensätze der Tabelle "buecher" aus. Zusätzlich stehen Optionen zum editieren und löschen der einzelner Datensätze bereit. Außerdem können wir einen neuen Datensatz einlesen.

Das Ganze sieht dann erstmal so aus:

PHP MySQL Daten bearbeiten

Gehen wir etwas genauer auf die drei Buttons unterhalb der Tabelle ein:

  • neues Buch eintragen: Natürlich wollen wir neue Bücher in unserer Tabelle speichern. Hierzu müssen wir zunächst auf den ersten Button klicken. Wir gelangen anschließend zur Seite buch-eintragen.php, wo wir einen neuen Buch-Datensatz erstellen können. Wir werden im nächsten Kapitel lernen, wie der PHP-Code hierzu aussehen muss.
  • ausgewählten Datensatz bearbeiten: Die erste Spalte namens edit bietet uns eine Reihe von Radio-Buttons an. Wir können damit einen Datensatz auswählen, um ihn anschlißend zu bearbeiten. Wenn wir auf den dazugehörigen Button unten namens (ausgewählten Datensatz bearbeiten ) klicken, kommen wir zur Seite buch-bearbeiten.php, wo die Bearbeitung stattfindet. Wie genau das abläuft, werden wir weiter unten erklären.
  • ausgewählte Datensätze löschen: In der zweiten Spalte sehen wir mehrere Checkboxes, die wir auswählen könnnen. Wenn wir nach der Auswahl den passenden Button unten klicken (ausgewählte Datensätze löschen ), werden wir zur Seite buecher-loeschen.php weitergeleitet. Hier werden dann die auswählten Bücher gelöscht. Auch das schauen wir uns später genauer an.

MySQL Datensätze mit PHP bearbeiten

In der Grafik sehen Sie die Dateistruktur des Programms.

Die "Startdatei", also die Datei, die der Nutzer zuerst aufruft, ist buecher.php. Über die Buttons gelangt er dann zu den einzelnen php-Seiten.

Der Code von buecher.php ist relativ einfach (wenn auch recht lang). Es werden alle Datensätze der MySQL-Tabelle buecher am Bildschirm angezeigt. Hier der Code:

<!DOCTYPE html><html lang="de"><head></head><body>

<h1>Bücher-Liste: </h1>
<?php

//Verbindung zur Datenbank herstellen
$host_name = 'localhost';
$user_name = 'root';
$password = '';
$database = 'DatenbankX1';

$connect = mysqli_connect($host_name, $user_name, $password, $database);
mysqli_query($connect, "SET NAMES 'utf8'");


// Anzeige aller Datensätze der Tabelle
$abfrage = "SELECT * FROM buecher";

$result = mysqli_query($connect, $abfrage);

echo "<table border='1' cellpadding='5'>
      <tr>
      <th>edit</th>
      <th>delete</th>
      <th>ID</th>
      <th>Titel</th>
      <th>Autor</th>
      <th>Erscheinungsjahr</th>
      <th>Bewertung</th>
      </tr>";
echo "<form method='post'>";
while($dsatz = mysqli_fetch_assoc($result)){
    echo "<tr>";
    $id = $dsatz["id"];

    echo "<td><input type='radio' name='auswahl' value='$id'></td>" .
         "<td><input type='checkbox' name='auswahl$id' value='$id'></td>" .

         "<td>" . $dsatz["id"] . "</td>" .
         "<td>" . $dsatz["titel"] . "</td>" .
         "<td>" . $dsatz["autor"] . "</td>" .
         "<td>" . $dsatz["erscheinungsjahr"] . "</td>" .
         "<td>" . $dsatz["bewertung"] .
         "</tr>";
}

echo "<table>";
?>


<!-- Das Eingabeformular: -->
<h2>Aktionen:</h2>

<p>
<input type="submit" name="eintragen" formaction="buch-eintragen.php" value="neues Buch eintragen">
</p>
<p>
<input type="submit" name="bearbeiten" formaction="buch-bearbeiten.php" value="ausgewählten Datensatz bearbeiten">
</p>
<p>
<input type="submit" name="löschen" formaction="buecher-loeschen.php" value="ausgewählte Datensätze löschen">
</p>

</form>

</body></html>

Da wir uns im vorherigen Kapitel im Detail damit beschäftigt haben, wie wir Daten einer MySQL-Tabelle im Browser anzeigen können, muss der nackte Code genügen.

Neuen Datensatz hinzugügen

Okay. Neue Bücher eintragen. Wie läuft das ab?

HTML-Formular zur Dateneingabe

Was wir zunächst benötigen, ist eine Eingabemaske, technisch gesprochen: ein HTML-Formular.

Wir schreiben das Formular in eine neue PHP-Datei namens buech-eintragen.php, welches ganz einfach wie im Screenshot unten aussieht:

PHP MySQL Daten einlesen

Dahinter steckt zunächst folgender HTML-Code:

<!DOCTYPE html><html lang="de"><head>
<meta charset="UTF-8">
<title>Neues Buch eintragen</title>

</head><body>

<h1>Neues Buch eintragen</h1>

<form action="buch-eintragen.php" method="post">
    <p><input name="titel"> Titel eintragen</p>
    <p><input name="autor"> Autor</p>
    <p><input name="erscheinungsjahr"> Erscheinungsjahr</p>
    <p><input name="bewertung"> Bewertung (1-5 Sterne)</p>
    <p><input type="submit" name="neuesBuchEintragen" value="Buch eintragen"> <input type="reset"></p>

</form>

<a href="buecher.php">Zurück zur Übersicht</a>

</body></html>

Wir können in Zeile 9 erkennen, dass die vom Nutzer eingegebenen Daten beim Klick auf den Submit-Button an dieselbe Datei (also buch-eintragen.php) geschickt werden.

PHP-Code einbauen

Nach aktuellem Stand besitzt buech-eintragen.php aber lediglich die Eingabemaske. Sonst nichts. PHP wird schmerzlich vermisst

Wir müssen den PHP-Code so schreiben, dass auf Grundlage der Nutzereingaben aus dem HTML-Formular ein neuer Bücher-Datensatz hinzugefügt wird.

Hierzu fügen wir folgenden PHP-Code in die Datei ein. Zum Beispiel in den head-Bereich des Quellcodes. Die vollständige buch-eintragen.php sieht dann so aus:

<!DOCTYPE html><html lang="de"><head>
<meta charset="UTF-8">
<title>Neues Buch eintragen</title>

<?php
    if(isset($_POST["neuesBuchEintragen"])){

    //Verbindung zur Datenbank herstellen
    $host_name = 'localhost';
    $user_name = 'root';
    $password = '';
    $database = 'DatenbankX1';
    $connect = mysqli_connect($host_name, $user_name, $password, $database);
    mysqli_query($connect, "SET NAMES 'utf8'");

    //Nutzereingabe in Variablen speichern
    $titel = $_POST["titel"];
    $autor = $_POST["autor"];
    $erscheinungsjahr = $_POST["erscheinungsjahr"];
    $bewertung = $_POST["bewertung"];

    // String für SQL-Anweisung erstellen
    $insertString = "INSERT INTO buecher(titel, autor, erscheinungsjahr, bewertung)
 VALUES ('$titel', '$autor', '$erscheinungsjahr', '$bewertung');";

    // SQL-Anweisung durchführen
    $check = mysqli_query($connect, $insertString);

    if($check) {
        echo "Ein neuer Datensatz erfolgreich hinzugefügt";
    }}
?>

</head><body>

<h1>Neues Buch eintragen</h1>

<form action="buch-eintragen.php" method="post">
    <p><input name="titel"> Titel eintragen</p>
    <p><input name="autor"> Autor</p>
    <p><input name="erscheinungsjahr"> Erscheinungsjahr</p>
    <p><input name="bewertung"> Bewertung (1-5 Sterne)</p>
    <p><input type="submit" name="neuesBuchEintragen" value="Buch eintragen"> <input type="reset"></p>

</form>

<a href="buecher.php">Zurück zur Übersicht</a>

</body></html>

Schauen wir uns den "Brocken" jetzt Stück für Stück an:

Die isset-Prüfung

Mit isset (Zeile 6) wird zuerst geprüft, ob der Submit-Button des HTML-Formulars (neuesBuchEintragen) geklickt wurde. Wenn das so ist, wird der Code im if-Block ausgeführt, der dafür sorgt, dass ein neuer Datensatz in die Tabelle eingetragen wird.

if(isset($_POST["neuesBuchEintragen"])){
//auszuführender Code
}

Die isset-Anweisung ist wichtig, da wir sonst eine Fehlermeldung erhalten, wenn wir die Datei buch-eintragen.php öffnen, ohne vorher den Submit-Button gedrückt zu haben. Verstehen Sie? Beim ersten Aufruf der Seite kann nämlich unmöglich der Button schon geklickt worden sein. Der Code würde ohne isset-Prüfung aber versuchen, das $_POST-Array abzufragen. Da es das aber ohne submit nicht gibt, kommt es zur Fehlermeldung.

Die ersten Anweisungen innerhalb des if-Blocks bestehen darin, Verbindung zur Datenbank herzustellen.

Anschließend werden die eingegebenen Werte, die mittels der vier HTML-Formular-Feldern ins $_POST-Array gekommen sind, in vier Variablen gespeichert:

$titel = $_POST["titel"];
$autor = $_POST["autor"];
$erscheinungsjahr = $_POST["erscheinungsjahr"];
$bewertung = $_POST["bewertung"];

Die INSERT-Anweisung

Wir werden diese Variablen gleich benutzen, um die SQL-Anweisung namens INSERT zusammenzusetzen. INSERT bewirkt, dass ein neuer Datensatz in einer SQL-Tabelle erzeugt wird. Das ist ja exakt das, was wir wollen.

Die allgemeine SQL-Syntax der INSERT-Anweisung lautet wie folgt:

INSERT INTO name_tabelle (spalte1, spalte2, ...)
 VALUES (wert1, wert2, ...);                    

Da wir nun wissen, wie die SQL-Anweisung für neue Datensätze aussehen muss, können wir uns den SQL-String passend zusammenbauen. Wir setzen dann für die einzelnen Werte (values) einfach unsere Variablen von oben ein (einfache Anführungszeichen dabei nicht vergessen!):

$insertString = "INSERT INTO buecher(titel, autor, erscheinungsjahr, bewertung)
 VALUES ('$titel', '$autor', '$erscheinungsjahr', '$bewertung');";

Jetzt ist es nur noch ein Schritt!

Wie wir wissen, benutzen wir die PHP-Funktion mysqli_query(), um eine SQL-Anweisung auszuführen. Als Parameter erwartet die Funktion erstens die Referenz auf die Verbindung zur MySQL-Datenbank ($connect) und zweitens unseren SQL-Anweisungs-String, den wir eben erstellt haben ($insertString):

$check = mysqli_query($connect, $insertString);

Fertig 🤗

Noch ein bisschen Kosmetik

Ihnen ist sicherlich die Variable $check (Zeile 27) aufgefallen. Die Funktion mysqli_query() liefert bei INSERT nämlich einen booleschen Wert zurück: true, wenn die SQL-Anweisung erfolgreich durchgeführt wurde, ansonsten false. Es bietet sich an, diesen Rückgabewert in der Variablen $check zu speichern und den Wert der Variablen anschließend mit einer if-Anweisung zu prüfen. So können wir dem Nutzer eine echo-Rückmeldung geben, ob der Datensatz erfolgreich in der Tabelle gespeichert wurde.

Einen Datensatz bearbeiten

In der ersten Spalte der HTML-Tabelle in buecher.php können wir einen von mehreren Radio-Buttons markieren und anschließend auf ausgewählten Datensatz bearbeiten klicken. Wir gelangen dann wir zur Seite buch-bearbeiten.php.

Hier lassen sich in vier Eingabefeldern die Werte des jeweiligen Datensatzes ändern. Wenn die Bearbeitung fertig ist, können wir sie mit einem Klick auf Bearbeitung abschließen speichern. Die MySQL-Tabelle wird dann entsprechend aktualisiert.

Optisch ganz karg, aber funktionsfähig sieht das Formular von buch-bearbeiten.php so aus:

PHP MySQL bearbeiten

Soviel zur Theorie. Wir wollen uns nun den gesamten Code von buch-bearbeiten.php ansehen. Da dieser etwas komplexer ist, zeigen wir ihn anschließend abschnittsweise.

<!DOCTYPE html><html lang="de"><head></head><body>

<h1>Ausgewählten Datensatz bearbeiten</h1>

<?php

// 1. Verbindung zur Datenbank herstellen
$host_name = 'localhost';
$user_name = 'root';
$password = '';
$database = 'DatenbankX1';

$connect = mysqli_connect($host_name, $user_name, $password, $database);
mysqli_query($connect, "SET NAMES 'utf8'");


// 2. Prüfe Radio-Button-Auswahl
if(isset($_POST["auswahl"])){

    // 3. Datenbankabfrage starten
    $id = $_POST["auswahl"];
    $abfrage = "SELECT * FROM buecher WHERE id = $id";
    $result = mysqli_query($connect, $abfrage);

    // 4. Datensatz in Variablen speichern
    $dsatz = mysqli_fetch_assoc($result);
    $titel = $dsatz["titel"];
    $autor = $dsatz["autor"];
    $erscheinungsjahr = $dsatz["erscheinungsjahr"];
    $bewertung = $dsatz["bewertung"];

    // 5. Das Bearbeiten-Formular anzeigen
    echo "<form action='buch-bearbeiten.php' method='post'>";
    echo "<input name='id' type='hidden' value='$id'>";
    echo "<p><input name='titel' value='$titel'> Titel</p>";
    echo "<p><input name='autor' value='$autor'> Autor</p>";
    echo "<p><input name='erscheinungsjahr' value='$erscheinungsjahr'> Erscheinungsjahr</p>";
    echo "<p><input name='bewertung' value='$bewertung'> Bewertung (1-5 Sterne)</p>";
    echo "<input name='bearbeitungAbschicken' value='Bearbeitung abschließen' type='submit'>";
    echo "</form>";

    echo "<a href='buecher.php'>zurück zur Übersicht</a>";
}

//6. Datensatz aktualisieren mit UPDATE
if(isset($_POST["bearbeitungAbschicken"])){
    $id = $_POST["id"];
    $titel = $_POST["titel"];
    $autor = $_POST["autor"];
    $erscheinungsjahr = $_POST["erscheinungsjahr"];
    $bewertung = $_POST["bewertung"];

//String für Update-Anweisung erstellen
$update = "UPDATE buecher SET
titel ='$titel',
autor ='$autor',
erscheinungsjahr ='$erscheinungsjahr',
bewertung ='$bewertung'
WHERE id = $id";

//MySQL-Anweisung ausführen
    mysqli_query($connect, $update);

    echo "Datensatz bearbeitet.<br>";
    echo "<a href='buecher.php'>zurück zur Übersicht</a>";
}

//Wenn der Nutzer in buecher.php keine Auswahl getroffen hat:
if(!isset($_POST["auswahl"]) && !isset($_POST["bearbeitungAbschicken"])){
    echo "Es wurde kein Datensatz ausgewählt.<br>";
    echo "<a href='buecher.php'>zurück zur Übersicht</a>";
}

?>

</body></html>

Es ist eine stets bewehrtes Vorgehen, wenn man einen längeren Code in Einzelabschnitte einteilt und sich nacheinander anschaut, was passiert. Legen wir los:

1. Verbindung zur Datenbank herstellen

Natürlich müssen wir gleich zu Beginn wieder eine Verbindung zur MySQL-Datenbank herstellen; ansonsten bekommen wir weder Daten rein noch raus. Wir verwenden hierzu die Funktion mysqli_connect() und übergeben ihr die Zugangsdaten als Argumente in Klammern.

2. Prüfe Radio-Button-Auswahl

In Zeile 18 gibt es eine if-Anweisung, die den Rückgabewert der Funktion isset() prüft. Wenn in der vorherigen Datei buecher.php ein Radio-Button ausgewählt wurde, ist der Rückgabewert true und der if-Block wird ausgeführt.

3. Datenbankabfrage starten

Mit der ersten Anweisung im if-Block (Zeile 21), nämlich $id = $_POST["auswahl"]; erhalten wir den value desjenigen Radio-Buttons, der in der vorherigen Datei buecher.php ausgewählt wurde. Da dieser Wert dem Wert der ID des gewünschten Datensatzes entspricht, speichern wir ihn sinnvollerweise in der Variablen namens $id. Damit können wir den Datensatz sehr einfach mit einer SELECT-Abfrage auswählen.

Dazu definieren wir zunächst den SQL-Abfrage-String und speichern ihn in der Variablen $abfrage (Zeile 22):

$abfrage = "SELECT * FROM buecher WHERE id = $id";

In der nächsten Zeile wird die Abfrage mit der Funktion mysqli_query() dann auch durchgeführt (die Funktion erhält in Klammern $connect und den Abfragestring). Die Ergebniskennung, die die Funktion zurückliefert, speichern wir für die nächsten Schritte in der Variablen $result (Zeile 23):

$result = mysqli_query($connect, $abfrage);

4. Datensatz in Variablen speichern

Wir verwenden jetzt die Funktion mysqli_fetch_assoc() und übergeben ihr die Variable $result als Argument. Die Funktion liefert den Datensatz der SQL-Abfage in einem assoziativen Array zurück, das wir in $dsatz speichern.

Die Tabellen-Attribute (titel, autor, erscheinungsjahr, bewertung) stellen im Array die Schlüssel (keys) dar, mit denen wir die passenden Werte (values) "ansteuern" können.

Auf diese Weise ist es uns möglich, jeden einzelnen Wert des Datensatzes in mehreren Variablen zu speichern:

$dsatz = mysqli_fetch_assoc($result);
$titel = $dsatz["titel"];
$autor = $dsatz["autor"];
$erscheinungsjahr = $dsatz["erscheinungsjahr"];
$bewertung = $dsatz["bewertung"];

Dieser Schritt ist deshalb so wichtig, weil wir gleich die einzelnen Werte des Datensatzes sowohl separat anzeigen als auch separat bearbeiten wollen.

5. Das Bearbeiten-Formular anzeigen

Jetzt kommt der ungemütliche Part 😏

Wir müssen innerhalb des PHP-Codes mit echo das HTML-Formular zur Bearbeitung des gewählten Datensatzes erzeugen. Da der Nutzer vier Werte des gewählten Datensatzes ändern kann, benötigen wir auch vier input-Eingabefelder.

Damit in der Tabelle die aktuell gespeicherten Werte des Datensatzes angezeigt werden, müssen wir die oben definierten Variablen($titel, $autor, $erscheinungsjahr, $bewertung) als Attribut-Werte von value der vier input-Eingabefeldern setzen:

echo "<form action='buch-bearbeiten.php' method='post'>";
echo "<input name='id' type='hidden' value='$id'>";

echo "<p><input name='titel' value='$titel'> Titel</p>";
echo "<p><input name='autor' value='$autor'> Autor</p>";
echo "<p><input name='erscheinungsjahr' value='$erscheinungsjahr'> Erscheinungsjahr</p>";

echo "<p><input name='bewertung' value='$bewertung'> Bewertung (1-5 Sterne)</p>";
echo "<input name='bearbeitungAbschicken' value='Bearbeitung abschließen' type='submit'>";
echo "</form>";

Eben deshalb ist dieser Abschnitt so knifflig, da wir HTML und PHP quasi vermischen müssen, um die PHP-Werte der Variablen in das HTML-Formular zu kriegen. Häufigste Fehlerquelle sind hier falsch gesetzt (einfache und doppelte) Anführungszeichen.

Sicherlich ist Ihnen auch das versteckte input-Feld aufgefallen:

echo "<input name='id' type='hidden' value='$id'>";

Dieses Feld ist für den Nutzer versteckt, weil er die ID eines Datensatzes nicht ändern darf. Für die weiteren Programmschritte ist es aber unumgänglich, dass die ID beim Abschicken des Formulars gemeinsam mit den vom Nutzer bearbeiteten Daten mitgeschickt wird.

6. Datensatz aktualisieren mit UPDATE

Der finale Schritt - also die Aktualisierung des gewählten Datensatzes auf Grundlage der Nutzereingabe - kommt jetzt.

Zunächst wird mit der if-Anweisung in Zeile 46 geprüft, ob der Button bearbeitungAbschicken überhaupt geklickt wurde. Erst wenn dies so ist, wird eine Änderung durchgeführt.

Es werden anschließend Variablen erstellt, die die Werte aus der Nutzereingabe speichern.

Der nächste Schritt besteht darin, die SQL-Anweisung für das Ändern eines Datensatzes zu erstellen. Hierfür verwendet man UPDATE:

$update = "UPDATE buecher SET
titel ='$titel',
autor ='$autor',
erscheinungsjahr ='$erscheinungsjahr',
bewertung ='$bewertung'
WHERE id = $id";

Am Ende wird der String der Funktion mysqli_query() übergeben und die SQL-Anweisung durchgeführt.

mysqli_query($connect, $update);

Datensatz löschen

Der letzte Schritt, den wir noch draufkriegen sollten, betrifft das Löschen einzelner Datenstätze. Die SQL-Anweisung, die wir für diesen Zweck benötigen, lautet DELETE. Diese funktioniert nach folgendem Muster:

DELETE FROM tabelleX WHERE bedingung;

Wie bisher lautet der Name der Tabelle buecher und die WHERE-Bedingung ist die ausgewählte zu löschende ID.

Der Code hierfür ist ist in der Datei buecher-loeschen.php und ist relativ einfach:

<!DOCTYPE html><html lang="de"><head></head><body>
<?php

//Datenbank-Verbindung herstellen
$host_name = 'localhost';
$user_name = 'root';
$password = '';
$database = 'DatenbankX1';
$connect = mysqli_connect($host_name, $user_name, $password, $database);
mysqli_query($connect, "SET NAMES 'utf8'");

//Ausgewählte Datensätze löschen:
for($i=1; $i<=999999; $i++){
    if(isset($_POST["auswahl$i"])){
        $deleteAnweisung = "DELETE FROM buecher WHERE id=$i";
        $result = mysqli_query($connect, $deleteAnweisung);
        echo "Datensatz mit der ID $i wurde gelöscht. <br>";
    }
}
?>

<a href="buecher.php">Zurück zur Übersicht</a>

</body></html>

Gewohntes Bild: Wir connecten zunächst zur MySQL-Datenbank. Gleich danach geht es aber auch schon zur Sache.

Damit eine Mehrfachauswahl für das Löschen von Datensätzen möglich ist, arbeiten wir mit einer for-Schleife, die 999999 Mal durchläuft. Mehr Datensätze dürfte unser Testprogram wohl niemals erreichen. Das ist zwar keine ganz saubere Lösung, aber die einfachste und ist für unsere Testzwecke voll in Ordnung.

Innerhalb eines jeden Schleifendurchgangs wird geprüft, ob die entsprechende Checkbox in der Datei buecher.php ausgewählt wurde. Der letzte Teil des Checkbox-Namens hat den selben Wert wie die aktuelle Schleifenvariable $i. So bedeutet beispielsweise im ersten Schleifendurchlauf auswahl$i auswahl1 (= erste Checkbox). Im zweiten Schleifendurchlauf bedeutet auswahl$i dann auswahl2 (=zweite Checkbox) usw.

Auf diese Art können wir mit Hilfe der Schleifenvariable alle Checkboxes aus buecher.php mit der Funktion isset() abfragen, ob sie mit einem Häckchen ausgewählt wurden oder nicht.

Wenn kein Häckchen in der entsprechenden Checkbox gesetzt wurde, kommt der nächste Schleifendurchlauf dran.

Wenn aber ein Häckchen gesetzt wurde, wird mit der SQL-DELETE-String $deleteAnweisung erstellt. Die "Löschbedingung" ist die jeweilige ID des entsprechenden Datensatzes, die gleich der Schleifenvariable $i ist.

Anschlißend wird die Funktion mysqli_query ausgeführt und der Datensatz gelöscht.

Übungen

einfach

Was bewirkt der folgende Code?

// weiterer Code...
$name = $_POST["name"];
$vorname = $_POST["vorname"];
$geburtstag = $_POST["geburtstag"];

$insert = "INSERT INTO personen(name, vorname, geburtstag)
 VALUES ('$name', '$vorname', '$geburtstag');";

mysqli_query($connect, $insert);
// weiterer Code...
Lösung ein-/ausblenden

mittel

Sie haben die SQL-Tabelle namens mitarbeiter.sql und eine PHP-Datei namens mitarbeiter.php.

Laden Sie sich beide Dateien runter (rechte Maustaste > Ziel speichern unter...), importieren Sie die SQL-Tabelle in Ihre Datenbank und passen Sie die Datenbank-Informationen in mitarbeiter.php entsprechend an.

Die PHP-Datei liest die MySQL-Tabelle aus und zeigt den Inhalt im Browser an. Das sieht dann so aus:

PHP MySQL Aufgabe

Aktuell ist das Eingabeformular völlig leblos und es geschieht nichts, wenn der Nutzer auf den Button klickt.

Ihre Aufgabe ist es nun, die PHP-Datei so zu ergänzen, dass die Eingaben des Nutzers mit PHP so verwertet werden, dass daraus ein neuer Datensatz enteht.

Lösung ein-/ausblenden

schwer

Bereit für den Diamanten? Dem Prinzip nach ist diese Aufgabe recht simpel: Der Nutzer wählt aus einer Liste von Mitarbeitern die Leute aus, deren Gehalt um einen von vier festgelegten Prozentsatz erhöht werden soll (Pull-Down-Menu!).

Die Mitarbeiter-Tabelle ist diesselbe wie aus der vorherigen Aufgabe (mitarbeiter.sql).

Erstellen Sie eine neue Datei namens mitarbeiterGehalt.php und schreiben Sie das Programm. Der Nutzer sollte etwas Derartiges im Browserfenster sehen:

PHP MySQL verbinden

Lösung ein-/ausblenden

Falconbyte unterstützen

Kommentar schreiben

Nur angemeldete und aktivierte Benutzer können kommentieren.

Alle Kommentare

fidangashi
31.12.2019 - 11:52
Hoi @elvis

Ich hatte den gleichen Fehler!

Aber Fehler war bei mir,habe immer die Falsche ort geklickt statt bearbeiten löshen und umgekehrt.

Bei mir funktioniert alles, wenn du brauchst kannich dir senden.

Gruss Fidan

Elvis
03.09.2019 - 13:24
Super Anleitung, nur leider habe ich ein Problem was ich nicht lösen kann.

Es geht um das bearbeiten, ich wähle einen Datensatz aus und drücke dann auf bearbeiten und als Meldung kriege ich dann
Es wurde kein Datensatz ausgewählt.
zurück zur Übersicht

ich weiß nicht warum er den gesetzten Punkt nicht erkennt. Ich habe zwei PhP datei einmal zulauf.php und bearbeiten.php

Elvis
03.09.2019 - 13:06
Super Anleitung, nur leider habe ich ein Problem was ich nicht lösen kann.

Es geht um das bearbeiten, ich wähle einen Datensatz aus und drücke dann auf bearbeiten und als Meldung kriege ich dann
Es wurde kein Datensatz ausgewählt.
zurück zur Übersicht

ich weiß nicht warum er den gesetzten Punkt nicht erkennt. Ich habe zwei PhP datei einmal zulauf.php und bearbeiten.php

toString() Methode

Lernen Sie hier, wie Sie die toString() Methode korrekt einsetzen

Primitive Datentypen

Am Ende des Kapitels werden Sie wissen, wie Primitive Datentypen korrekt eingesetzt werden.

Statische Elemente

Statische Variablen und Methoden nutzen

FALCONBYTE.NET

Handmade with 🖤️

© 2018-2021 Stefan E. Heller

Impressum | Datenschutz

facebook programmieren lernen twitter programmieren lernen youtube programmieren lernen