Tạo, chỉnh sửa, cập nhật và xóa nội dung trên một trang web là những gì làm cho trang web trở nên động. Đó là những gì chúng tôi sẽ làm trong bài đăng này.
Người dùng truy cập trang web của chúng tôi sẽ có thể tạo các bài đăng sẽ được lưu trong cơ sở dữ liệu mysql, lấy các bài đăng từ cơ sở dữ liệu và hiển thị chúng trên trang web. Mỗi bài đăng sẽ được hiển thị với một nút chỉnh sửa và xóa để cho phép người dùng cập nhật bài đăng cũng như xóa chúng.
Đầu tiên, tạo một cơ sở dữ liệu có tên là crud. Trong cơ sở dữ liệu thô, hãy tạo một bảng có tên là thông tin. Bảng thông tin phải có các cột sau:
-
id - int (11)
- tên - varchar (100)
- địa chỉ - varchar (100)
Yap! Chỉ hai lĩnh vực. Tôi đang cố gắng giữ mọi thứ đơn giản ở đây. vì vậy, hãy chuyển sang bước tiếp theo.
Tạo một tệp có tên là index.php và dán vào đó đoạn mã sau:
<!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>
Nếu bạn lưu và mở trang web trên trình duyệt của mình, bạn sẽ nhận được một thứ như sau:
Trông không giống như hình thức tốt nhất trên thế giới phải không? Hãy khắc phục điều đó. Thêm dòng này ngay bên dưới thẻ
<link rel="stylesheet" type="text/css" href="style.css">
Đó là liên kết để tải kiểu từ tệp biểu định kiểu. Hãy tạo tệp styles.css và thêm mã tạo kiểu này vào trong đó.
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;
}
Bây giờ, hãy kiểm tra lại biểu mẫu của chúng tôi trong trình duyệt:
Cái đó tốt hơn!
Tôi thường muốn tách mã HTML khỏi mã PHP càng nhiều càng tốt. Tôi coi đó là thực hành tốt. Lưu ý rằng, hãy tạo một tệp khác có tên là php_code.php nơi chúng tôi triển khai tất cả các chức năng của php như kết nối với cơ sở dữ liệu, truy vấn cơ sở dữ liệu và những thứ tương tự.
Vì vậy, hãy mở php_code.php và dán đoạn mã sau vào đó:
<?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');
}
// ...
Bây giờ hãy bao gồm tệp này ở trên cùng (dòng đầu tiên) của tệp index.php của bạn. Như vậy:
<?php include('server.php'); ?>
Tại thời điểm này, tất cả những gì mã này làm là kết nối với cơ sở dữ liệu, khởi tạo một số biến và lưu dữ liệu đã gửi từ biểu mẫu vào cơ sở dữ liệu trong thông tin mà chúng tôi đã tạo trước đó. Đó chỉ là phần CReate của CRUD. Hãy tiếp tục với những người khác.
Bây giờ hãy truy cập lại tệp index.php của bạn và thêm mã này ngay dưới thẻ
// ...
<body>
<?php if (isset($_SESSION['message'])): ?>
<div class="msg">
<?php
echo $_SESSION['message'];
unset($_SESSION['message']);
?>
</div>
<?php endif ?>
Mã này hiển thị một thông báo xác nhận để cho người dùng biết rằng một bản ghi mới đã được tạo trong cơ sở dữ liệu.
Để truy xuất các bản ghi cơ sở dữ liệu và hiển thị chúng trên trang, hãy thêm mã này ngay phía trên biểu mẫu đầu vào:
<?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>
// ...
Hãy tạo một bản ghi mới và xem liệu công cụ này có hoạt động không:
..và Voila!! Nó hoạt động hoàn hảo!
Bây giờ chúng ta chuyển sang chỉnh sửa. Ở đầu tệp index.php của bạn (ngay sau câu lệnh include), hãy thêm đoạn mã sau:
<?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'];
}
}
?>
Khi chỉnh sửa bản ghi cơ sở dữ liệu, chúng ta cần đặt các giá trị cũ trong biểu mẫu để chúng có thể được sửa đổi. Để làm như vậy, hãy sửa đổi các trường đầu vào của chúng tôi trên biểu mẫu và đặt các giá trị đó được lấy từ cơ sở dữ liệu ($ name, $ address) làm giá trị thành value thuộc tính của các trường biểu mẫu.
Ngoài ra, hãy thêm một trường ẩn để giữ id của bản ghi mà chúng tôi sẽ cập nhật để nó có thể được nhận dạng duy nhất trong cơ sở dữ liệu bằng id của nó. Điều này giải thích nó tốt hơn:
// 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; ?>">
Hãy nhớ tất cả những thứ đó đều có trong đầu vào