Das Erstellen, Bearbeiten, Aktualisieren und Löschen von Inhalten auf einer Website macht die Website dynamisch. Das werden wir in diesem Beitrag tun.
Ein Benutzer, der unsere Website besucht, kann Beiträge erstellen, die in einer MySQL-Datenbank gespeichert werden, die Beiträge aus der Datenbank abrufen und auf der Webseite anzeigen. Jeder Beitrag wird mit einer Schaltfläche zum Bearbeiten und Löschen angezeigt, damit der Benutzer Beiträge aktualisieren und löschen kann.
Erstellen Sie zunächst eine Datenbank namens crud. Erstellen Sie in der Crud-Datenbank eine Tabelle namens info. Die Infotabelle sollte folgende Spalten haben:
-
id - int(11)
- name - varchar(100)
- Adresse - varchar(100)
Kläffen! Nur zwei Felder. Ich versuche, die Dinge hier einfach zu halten. Fahren wir also mit dem nächsten Schritt fort.
Erstellen Sie eine Datei namens index.php und fügen Sie den folgenden Code ein:
<!DOCTYPE html>
<html>
<head>
<title>CRUD: CReate, Update, Delete PHP MySQL</title>
</head>
<body>
<form method="post" action="server.php" >
<div class="input-group">
<label>Name</label>
<input type="text" name="name" value="">
</div>
<div class="input-group">
<label>Address</label>
<input type="text" name="address" value="">
</div>
<div class="input-group">
<button class="btn" type="submit" name="save" >Save</button>
</div>
</form>
</body>
</html>
Wenn Sie die Website in Ihrem Browser speichern und öffnen, erhalten Sie etwa Folgendes:
Sieht nicht nach der besten Form der Welt aus, oder? Lassen Sie uns das beheben. Fügen Sie diese Zeile direkt unter dem
<link rel="stylesheet" type="text/css" href="style.css">
Das ist der Link zum Laden des Stylings aus der Stylesheet-Datei. Lassen Sie uns die Datei styles.css erstellen und diesen Stilcode darin einfügen.
body {
font-size: 19px;
}
table{
width: 50%;
margin: 30px auto;
border-collapse: collapse;
text-align: left;
}
tr {
border-bottom: 1px solid #cbcbcb;
}
th, td{
border: none;
height: 30px;
padding: 2px;
}
tr:hover {
background: #F5F5F5;
}
form {
width: 45%;
margin: 50px auto;
text-align: left;
padding: 20px;
border: 1px solid #bbbbbb;
border-radius: 5px;
}
.input-group {
margin: 10px 0px 10px 0px;
}
.input-group label {
display: block;
text-align: left;
margin: 3px;
}
.input-group input {
height: 30px;
width: 93%;
padding: 5px 10px;
font-size: 16px;
border-radius: 5px;
border: 1px solid gray;
}
.btn {
padding: 10px;
font-size: 15px;
color: white;
background: #5F9EA0;
border: none;
border-radius: 5px;
}
.edit_btn {
text-decoration: none;
padding: 2px 5px;
background: #2E8B57;
color: white;
border-radius: 3px;
}
.del_btn {
text-decoration: none;
padding: 2px 5px;
color: white;
border-radius: 3px;
background: #800000;
}
.msg {
margin: 30px auto;
padding: 10px;
border-radius: 5px;
color: #3c763d;
background: #dff0d8;
border: 1px solid #3c763d;
width: 50%;
text-align: center;
}
Jetzt schauen wir uns unser Formular noch einmal im Browser an:
Das ist besser!
Normalerweise möchte ich meinen HTML-Code so weit wie möglich von meinem PHP-Code trennen. Ich halte das für eine gute Praxis. Lassen Sie uns in diesem Sinne eine weitere Datei namens php_code.php erstellen, in der wir alle PHP-Funktionalitäten wie die Verbindung zur Datenbank, das Abfragen der Datenbank und dergleichen implementieren.
Öffnen Sie also php_code.php und fügen Sie den folgenden Code ein:
<?php
session_start();
$db = mysqli_connect('localhost', 'root', '', 'crud');
// initialize variables
$name = "";
$address = "";
$id = 0;
$update = false;
if (isset($_POST['save'])) {
$name = $_POST['name'];
$address = $_POST['address'];
mysqli_query($db, "INSERT INTO info (name, address) VALUES ('$name', '$address')");
$_SESSION['message'] = "Address saved";
header('location: index.php');
}
// ...
Fügen Sie diese Datei nun ganz oben (in der allerersten Zeile) Ihrer index.php-Datei hinzu. So:
<?php include('server.php'); ?>
An diesem Punkt stellt dieser Code lediglich eine Verbindung zur Datenbank her, initialisiert einige Variablen und speichert übermittelte Daten aus dem Formular in der Datenbank in den zuvor erstellten Informationen. Das ist nur der CReate-Teil von CRUD. Fahren wir mit den anderen fort.
Besuchen Sie nun erneut Ihre index.php-Datei und fügen Sie diesen Code direkt unter dem
// ...
<body>
<?php if (isset($_SESSION['message'])): ?>
<div class="msg">
<?php
echo $_SESSION['message'];
unset($_SESSION['message']);
?>
</div>
<?php endif ?>
Dieser Code zeigt eine Bestätigungsmeldung an, um dem Benutzer mitzuteilen, dass ein neuer Datensatz in der Datenbank erstellt wurde.
Um die Datenbankeinträge abzurufen und auf der Seite anzuzeigen, fügen Sie diesen Code direkt über dem Eingabeformular hinzu:
<?php $results = mysqli_query($db, "SELECT * FROM info"); ?>
<table>
<thead>
<tr>
<th>Name</th>
<th>Address</th>
<th colspan="2">Action</th>
</tr>
</thead>
<?php while ($row = mysqli_fetch_array($results)) { ?>
<tr>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['address']; ?></td>
<td>
<a href="index.php?edit=<?php echo $row['id']; ?>" class="edit_btn" >Edit</a>
</td>
<td>
<a href="server.php?del=<?php echo $row['id']; ?>" class="del_btn">Delete</a>
</td>
</tr>
<?php } ?>
</table>
<form>
// ...
Lassen Sie uns einen neuen Datensatz erstellen und sehen, ob das Zeug funktioniert:
..und voila!! Es funktioniert perfekt!
Jetzt gehen wir zur Bearbeitung über. Fügen Sie am Anfang Ihrer index.php-Datei (direkt nach der Include-Anweisung) den folgenden Code hinzu:
<?php
if (isset($_GET['edit'])) {
$id = $_GET['edit'];
$update = true;
$record = mysqli_query($db, "SELECT * FROM info WHERE id=$id");
if (count($record) == 1 ) {
$n = mysqli_fetch_array($record);
$name = $n['name'];
$address = $n['address'];
}
}
?>
Beim Bearbeiten eines Datenbankeintrags müssen wir die alten Werte in das Formular einfügen, damit sie geändert werden können. Dazu ändern wir unsere Eingabefelder im Formular und setzen die Werte aus der Datenbank ($name, $address) als Werte auf den Wert Attribut der Formularfelder.
Fügen Sie auch ein verborgenes Feld hinzu, um die ID des Datensatzes zu speichern, den wir aktualisieren werden, damit er in der Datenbank eindeutig anhand seiner ID erkannt werden kann. Dies erklärt es besser:
// newly added field
<input type="hidden" name="id" value="<?php echo $id; ?>">
// modified form fields
<input type="text" name="name" value="<?php echo $name; ?>">
<input type="text" name="address" value="<?php echo $address; ?>">
Denken Sie daran, dass all das in der Eingabe