Tutorials » MySQL: Daten löschen

Daten löschen

Im nächsten Schritt wollen wir unsere Benutzerdaten-Verwaltung um eine Löschen-Funktion ergänzen.

Dazu fügst du den folgenden Code wieder in eine neue Zeile nach der schließenden, geschweiften Klammer } nach der Funktion function addBenutzer($name, $alter, $email) ein:

Code anklicken zum kopieren

// Funktion zum Löschen eines Benutzers
function deleteBenutzer($id)
{
global $conn;

$stmt = $conn->prepare("DELETE FROM benutzer WHERE id = ?");
$stmt->execute([$id]);
}

Code anklicken zum kopieren



Die Funktion deleteBenutzer($id) löscht den Benutzer mit der angegebenen ID aus der Datenbanktabelle "benutzer". Dazu wird der Befehl $stmt = $conn->prepare("DELETE FROM benutzer WHERE id = ?");
$stmt->execute([$id]);
verwendet.

Nun fügst du den folgenden Code nach der schließenden, geschweiften Klammer von if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["add"])) ein:

Code anklicken zum kopieren

// Überprüfen, ob das Formular zum Löschen gesendet wurde
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["delete"])) {
$id = $_POST["delete"];

// Benutzer löschen
deleteBenutzer($id);
}

Code anklicken zum kopieren



Mit if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["delete"])) weisen wor PHP an, zu prüfen, ob die Seite mit POST-Header aufgerufen wird, was nach dem Drücken von Löschen der Fall ist.

Dann änderst du den <table>-Teil ab, und fügst eine neue Spalte mit Aktionen ein:

Code anklicken zum kopieren

<table>
<tr>
<th>Name</th>
<th>Alter</th>
<th>Email</th>
<th>Aktionen</th>
</tr>

Code anklicken zum kopieren



Zu guter letzt änderst du den foreach ($rows as $row)-Teil ab und fügst eine neue Spalte mit einem Button zum löschen ein, der eine versteckte ID enthält:

Code anklicken zum kopieren

 foreach ($rows as $row) {
echo "<tr>";
echo "<td>" . $row["name"] . "</td>";
echo "<td>" . $row["alter"] . "</td>";
echo "<td>" . $row["email"] . "</td>";
echo "<td>";
echo "<form method='POST' style='display: inline;'>";
echo "<input type='hidden' name='delete' value='" . $row["id"] . "'>";
echo "<input type='submit' value='Löschen'>";
echo "</form>";
echo "</td>";
echo "</tr>";
}

Code anklicken zum kopieren


Ja, kompliziert!

Deshalb hier noch einmal der gesamte Code, den wir jetzt haben sollten:

Code anklicken zum kopieren

<?php
require "db-connection.php";

// Funktion zum Hinzufügen eines neuen Benutzers
function addBenutzer($name, $alter, $email)
{
global $conn;

$stmt = $conn->prepare("INSERT INTO benutzer (name, alter, email) VALUES (?, ?, ?)");
$stmt->execute([$name, $alter, $email]);
}

// Funktion zum Löschen eines Benutzers
function deleteBenutzer($id)
{
global $conn;

$stmt = $conn->prepare("DELETE FROM benutzer WHERE id = ?");
$stmt->execute([$id]);
}

// Überprüfen, ob das Formular zum Hinzufügen gesendet wurde
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["add"])) {
$name = $_POST["name"];
$alter = $_POST["alter"];
$email = $_POST["email"];

// Neuen Benutzer hinzufügen
addBenutzer($name, $alter, $email);
}

// Überprüfen, ob das Formular zum Löschen gesendet wurde
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["delete"])) {
$id = $_POST["delete"];

// Benutzer löschen
deleteBenutzer($id);
}
?>

<!DOCTYPE html>
<html>
<head>
<title>Benutzerdaten</title>
<style>
table {
border-collapse: collapse;
}
th, td {
border: 1px solid black;
padding: 8px;
}
</style>
</head>
<body>

<h1>Benutzerdaten</h1>

<table>
<tr>
<th>Name</th>
<th>Alter</th>
<th>Email</th>
<th>Aktionen</th>
</tr>

<?php
$stmt = $conn->query("SELECT * FROM benutzer");
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

if ($stmt->rowCount() > 0) {
foreach ($rows as $row) {
echo "<tr>";
echo "<td>" . $row["name"] . "</td>";
echo "<td>" . $row["alter"] . "</td>";
echo "<td>" . $row["email"] . "</td>";
echo "<td>";
echo "<form method='POST' style='display: inline;'>";
echo "<input type='hidden' name='delete' value='" . $row["id"] . "'>";
echo "<input type='submit' value='Löschen'>";
echo "</form>";
echo "</td>";
echo "</tr>";
}
} else {
echo "<tr><td colspan='4'>Keine Benutzerdaten vorhanden</td></tr>";
}
?>

</table>

<h2>Neuen Benutzer hinzufügen</h2>

<form method="POST">
<label for="name">Name:</label>
<input type="text" name="name" required>
<br>
<label for="alter">Alter:</label>
<input type="number" name="alter" required>
<br>
<label for="email">Email:</label>
<input type="email" name="email" required>
<br>
<input type="submit" name="add" value="Benutzer hinzufügen">
</form>

</body>
</html>

<?php
// Datenbankverbindung schließen
$conn = null;
?>

Code anklicken zum kopieren



Mit diesem Code hast du jetzt eine Seite, die dir deine Benutzer in einer Tabelle anzeigt, du hast unterhalb der Tabelle ein Formular, in das du neue Benutzer eintragen kannst und in jeder Zeile ist ein Button zum Löschen der jeweiligen Zeile!

Bitte beachte: Dieses Script ist im Bezug auf Sicherheit nicht zu verwenden! Schaue dir gerne mein Tutorial zum absichern von Formularen mit PHP an.


Zurück Weiter


Kommentare

Möchtest du etwas zu diesem Tutorial sagen?