Tạo chức năng thêm bài viết bằng PHP

Với mọi trang web chức năng thêm bài viết vào cơ sở dữ liệu là điều bắt buộc phải làm. Nếu bạn đang xây dựng một website bằng PHP thì nên tham khảo bài viết này sẽ giúp bạn viết code PHP đăng bài viết một cách dễ dàng. Đây cũng là một phần chức năng trong trang quản trị admin của một trang web PHP.

Xây dựng trang thêm bài viết mới cho admin trong phần quản trị

Bước 1: Bạn sẽ tạo bảng posts với lênh MySQL (Bảng này sẽ nằm trong Database là data, xem thêm bài viết này nếu chưa biết tạo database)

CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`url` varchar(100) NOT NULL,
`content` text(3000) NOT NULL,
`image` varchar(500) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=1 ;

Bước 2: Tạo một file posts_add.php trong htdocs

<!DOCTYPE html>  
<html>
<head>
<title>Thêm bài viết</title>
</head>
   
<body>
<form action="posts_add.php" enctype="multipart/form-data" method="post" class="form">
        <table width="600" border="1" cellspacing="5" cellpadding="5">
  <tr>
    <td width="230">Tiêu đề </td>
    <td width="329"><input type="text" name="title"/></td>
  </tr>
  <tr>
    <td>URL </td>
    <td><input type="text" name="url"/></td>
  </tr>
    <tr>
    <td>Content </td>
    <td><textarea name="content" id="content" placeholder="Đây là nội dung..." class="noidung" rows="10" cols="80"></textarea></td>
  </tr>
    <tr>
    <td>Ảnh </td>
    <td><input type="hidden" name="size" value="1000000">
<input type="file" name="image" class="hinhanh"><br/><br/></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" name="btn_submit" value="Save Data"/></td>
  </tr>
</table>
</form>
<h2>Nội dung trong Database</h2>
<?php require 'posts_xuly.php';?>
</body>
</html>

Bước 3: Tạo file posts_xuly.php

<head>
<link rel="stylesheet" href="style.css"/>
</head>
<body>
<div class="noidung">
<table border="1">
<tr>
<td>Tiêu đề:</td>
<td>Nội dung:</td>
<td>Hình ảnh:</td>
<td>Sửa:</td>
<td>Xoá:</td>
</tr>
<?php
require 'posts_connect.php';
// Up bài viết
if (isset($_POST['btn_submit'])) {
    $id=$_GET['id'];
    $title = $_POST['title'];
$url = $_POST['url'];
    $content = $_POST['content'];
// Upload ảnh 
    $image = $_FILES['image']['name'];
    $errors= array();
    $file_name = $_FILES['image']['name'];
    $file_size = $_FILES['image']['size'];
    $file_tmp = $_FILES['image']['tmp_name'];
    $file_type = $_FILES['image']['type'];
    $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
           
    $expensions= array("jpeg","jpg","png");
           
    if(in_array($file_ext,$expensions)=== false){
        $errors[]="Chỉ hỗ trợ upload file JPEG hoặc PNG.";
    }
           
    if($file_size > 2097152) {
        $errors[]='Kích thước file không được lớn hơn 2MB';
    }
    $target = "photo/".basename($image);
    $sql = "INSERT INTO posts( title,url,content,image ) VALUES ( '$title','$url', '$content', '$image' )";
    if (mysqli_query($conn, $sql) && move_uploaded_file($_FILES['image']['tmp_name'], $target) && empty($errors)==true) {
            echo '<script language="javascript">alert("Đăng bài viết thành công!");</script>';
            } else{
            echo '<script language="javascript">alert("Có lỗi trong quá trình xử lý");</script>';
    }
}
    $sql = "SELECT * FROM posts WHERE id";
    $result = mysqli_query($conn, $sql);
    while ($row = mysqli_fetch_array($result)) {
        echo "<tr>";
        echo "<td><h2>".$row['title']."</h2></td>";
        echo "<td><p>".$row['content']."</p></td>";
        echo "<td><img src='photo/".$row['image']."' height=100></td>";
        echo '<td><a href="posts_edit.php?id='.$row['id'].'">Edit</a></td> | <td><a href="posts_delete.php?id='.$row['id'].'">Delete</a></td>';
        echo "</tr>";
    }
?>
</table>
</div>
</body>
</html>

Bước 4: Tạo file posts_connect.php để kết nối Database

<?php
$conn = mysqli_connect("localhost", "root", "", "data");
mysqli_set_charset($conn, 'UTF8');
?>

Bước 5: Tạo một thư mục tên là photo để lưu trữ hình ảnh trên localhost

Thư mục Upload photo

Sau khi xây dựng xong phần post bài viết bạn sẽ tiếp tục thêm chức năng chỉnh sửa (Edit) bài viết để khi muốn sửa sẽ dễ dàng hơn.

Bước 1: Tạo  file tên là posts_edit.php

<head>
<title>Sửa dữ liệu trong Database</title>
<link rel="stylesheet" href="style.css"/>
</head>
<body>
<?php
// Kết nối Database
require_once 'posts_connect.php';
$id=$_GET['id'];
$query=mysqli_query($conn,"select * from `posts` where id='$id'");
$row=mysqli_fetch_assoc($query);
?>
<form method="POST" class="form">
<h2>Sửa thành viên</h2>
<label>Tiêu đề:<br/>
<input type="text" value="<?php echo $row['title']; ?>" name="title" id="title"/></label><br/>
<label>URL:<br/>
<input type="text" value="<?php echo $row['url']; ?>" name="url" id="url"/></label><br/>
<label>Nội dung:<br/>
<textarea value="" name="content" id="content" rows="10" cols="80"/><?php echo $row['content']; ?></textarea></label><br/>
<label>Hình ảnh: <br/>
<input type="text" value="<?php echo $row['image']; ?>" name="image"/></label><br/>
<input type="submit" value="Update" name="update_posts">
<?php require_once 'posts_update.php';?>
</form>
</body>
</html>

Đọc thêm: CKEditor là gì? Cách sử dụng CKEditor để tạo chức năng thêm bài viết trong PHP nâng cao

Bước 2: Tạo file tên là posts_update.php để cập nhật bài viết đã chỉnh sửa

<?php
if (isset($_POST['update_posts'])){
$id=$_GET['id'];
$title=$_POST['title'];
$url=$_POST['url'];
$content=$_POST['content'];
$image=$_POST['image'];
 
$sql = "UPDATE `posts` SET title='$title', '$url', content='$content', image='$image' WHERE id='$id'";
 
if ($conn->query($sql) === TRUE) {
echo "<b>Record updated successfully</b>";
} else {
echo "Error updating record: " . $conn->error;
}
 
$conn->close();
}
?>

Bước 3: Thêm chức năng xoá file trong MySQL posts_delete.php

<?php
include 'posts_connect.php';
if(isset($_REQUEST['id']) and $_REQUEST['id']!=""){
$id=$_GET['id'];
$sql = "DELETE FROM posts WHERE id='$id'";
if ($conn->query($sql) === TRUE) {
echo "Xoá thành công!";
} else {
echo "Error updating record: " . $conn->error;
}
$conn->close();
}
header("Location: posts_add.php");
?>

Cuối cùng tạo thêm 1 file style.css

body {
width: 600px;
margin: 0 auto;
}
img {
width: 100%;
}

Tổng kết: Đây là bài viết tạo trang thêm bài viết nếu bạn mới thực hành thấy hơi phức tạp nhưng thật ra thì nó khá đơn giản. Nếu bạn cảm thấy quá khó khăn hãy comment phía dưới để được hỗ trợ nhé!

Đọc tiếp: Hướng dẫn xây dựng trang web bằng PHP và Bootstrap

Related Posts

Namespace trong PHP

Namespace cho phép các lớp / hàm / hằng cùng tên được sử dụng trong các ngữ cảnh khác nhau mà không có bất kỳ xung đột…

Hàm str_split() trong PHP

Bài viết này chúng ta sẽ đi tìm hiểu về hàm str_split(). Một trong những hàm thường được dùng trong PHP. Vậy cách sử dụng str_split() như…

Tạo chức năng sửa xoá thành viên bằng PHP & MySQL

Với một số trang web để quản lý thành viên (user) dễ dàng trong phần quản trị admin bạn phải khởi tạo chức năng sửa xoá thành…

Hàm str_replace trong PHP

Hàm str_replace trong PHP là gì? Hàm str_replace() trong PHP là một hàm được sử dụng để thay thế tất cả các xuất hiện của một chuỗi…

laravel8-vews-1

Views trong Laravel 8

Trong chuỗi series hướng dẫn học Laravel thì Views cũng quan trọng không kém gì so với Controller hay Model. Vậy chúng ta sẽ làm thế nào…

Validate Form trong PHP

Mặc dù trình duyệt hỗ trợ JavaScript để xác thực người dùng cho website. Tuy nhiên nếu JavaScript bị lỗi hoặc tắt đi thì công việc này…