Att skapa, redigera, uppdatera och ta bort innehåll på en webbplats är det som gör webbplatsen dynamisk. Det är vad vi kommer att göra i det här inlägget.
En användare som besöker vår webbplats kommer att kunna skapa inlägg som kommer att sparas i en mysql-databas, hämta inläggen från databasen och visa dem på webbsidan. Varje inlägg kommer att visas med en redigerings- och raderingsknapp för att tillåta användaren att uppdatera inlägg samt ta bort dem.
Skapa först en databas med namnet crud. Skapa en tabell som heter info. i crud-databasen Informationstabellen bör ha följande kolumner:
-
id - int(11)
- namn - varchar(100)
- adress - varchar(100)
Käft! Bara två fält. Jag försöker hålla det enkelt här. så låt oss gå vidare till nästa steg.
Skapa en fil som heter index.php och klistra in följande kod i den:
<!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>
Om du sparar och öppnar webbplatsen i din webbläsare får du något sånt här:
Ser inte ut som den bästa formen i världen eller hur? Låt oss fixa det. Lägg till den här raden direkt under
<link rel="stylesheet" type="text/css" href="style.css">
Det är länken för att ladda styling från stilmallsfilen. Låt oss skapa styles.css-filen och lägga till denna stilkod i den.
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;
}
Låt oss nu kolla vårt formulär i webbläsaren igen:
Det är bättre!
Jag brukar vilja separera min HTML-kod från min PHP-kod så mycket som möjligt. Jag anser att det är bra praxis. På den noten, låt oss skapa en annan fil som heter php_code.php där vi implementerar alla php-funktioner som att ansluta till databasen, fråga efter databasen och liknande.
Så öppna php_code.php och klistra in följande kod i den:
<?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');
}
// ...
Inkludera nu den här filen överst (den allra första raden) i din index.php-fil. Som så:
<?php include('server.php'); ?>
Vid det här laget är allt som den här koden gör att ansluta till databasen, initiera vissa variabler och spara inskickad data från formuläret till databasen i den information vi skapade tidigare. Det är bara CReate-delen av CRUD. Låt oss fortsätta med de andra.
Besök nu din index.php-fil igen och lägg till den här koden direkt under
// ...
<body>
<?php if (isset($_SESSION['message'])): ?>
<div class="msg">
<?php
echo $_SESSION['message'];
unset($_SESSION['message']);
?>
</div>
<?php endif ?>
Denna kod visar ett bekräftelsemeddelande för att tala om för användaren att en ny post har skapats i databasen.
För att hämta databasposterna och visa dem på sidan, lägg till denna kod direkt ovanför inmatningsformuläret:
<?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>
// ...
Låt oss skapa en ny post och se om det här fungerar:
..och voila!! Det fungerar perfekt!
Nu går vi vidare till redigering. Överst i din index.php-fil (direkt efter include-satsen) lägg till följande kod:
<?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'];
}
}
?>
När vi redigerar en databaspost måste vi lägga de gamla värdena i formuläret så att de kan ändras. För att göra det, låt oss ändra våra inmatningsfält i formuläret och ställa in de värden som hämtats från databasen ($name, $address) som värden till värdet attribut för formulärfälten.
Lägg också till ett dolt fält för att hålla id för posten vi kommer att uppdatera så att den kan identifieras i databasen unikt av dess id. Detta förklarar det bättre:
// 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; ?>">
Kom ihåg att allt detta finns i ingången