Ở bài trước, chúng ta đã tìm hiểu về cách tạo trang đăng nhập để xử lý thông tin đăng nhập và chuyển hướng người dùng đến trang index.php khi thông tin đăng nhập là chính xác. Trong bài viết hôm này, mình sẽ hướng dẫn các bạn, tạo trang Thêm bài viết, dùng cho việc thêm một bài mới và hiển thị bài viết đó ra ngoài giao diện.

Trong bài hướng dẫn hôm nay, chúng ta sẽ làm những công việc như sau :

  • Thiết kế giao diện Thêm bài viết
  • Tiến hành xử lý và lưu bài viết vào cơ sở dữ liệu
  • Hiển thị bài viết ra bên ngoài website.

TẠO TRANG THÊM BÀI VIẾT

1. Thiết kế giao diện trang Thêm bài viết

Trong phần này mình sẽ hướng dẫn các bạn thiết kế giao diện đơn giản cho trang Thêm bài viết của chúng ta bao gồm :

  • Tiêu đề bài viết
  • Nội dung bài viết
  • Bài viết có được public hay không
  • Nút Thêm bài viết

Trong thư mục website mà chúng ta đã tạo ra ở các bài viết trước, các bạn tạo cho mình 1 thư mục mới đặt tên là admin, trong thư mục này các bạn copy 2 thư mục style và includes bỏ vào đây, đồng thời tạo 1 file mới đặt tên là them-bai-viet.php.

Cấu trúc thư mục admin như sau :

thêm bài viết, tạo website php

Tiếp đến, các bạn thêm đoạn code này vào trong file them-bai-viet.php

<?php include "includes/header.php" ?>
<form action="them-bai-viet.php" method="post">
		<table>
			<tr>
				<td colspan="2"><h3>Thêm bài viết mới</h3></td>
			</tr>	
			<tr>
				<td nowrap="nowrap">Tiêu đề bài viết :</td>
				<td><input type="text" id="title" name="title"></td>
			</tr>
			<tr>
				<td nowrap="nowrap">Nội dung :</td>
				<td><textarea name="content" id="content" rows="10" cols="150"></textarea></td>
			</tr>
			<tr>
				<td nowrap="nowrap">Public bài viết ? :</td>
				<td><input type="checkbox" id="is_public" name="is_public" value="1"> public</td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" name="btn_submit" value="Thêm bài viết"></td>
			</tr>

		</table>
		
	</form>
<?php include "includes/footer.php" ?>

Chạy đường dẫn

http://localhost/admin/them-bai-viet.php

, các bạn sẽ thấy giao diện hiển thị như sau :

giao diện thêm bài viết php

2 . Tiến hành xử lý thông tin và lưu bài viết vào cơ sở dữ liệu

Sau khi đã hoàn thành việc thiết kế giao diện, chúng ta sẽ tiến hành lấy thông tin từ form thêm bài viết, xử lý thông tin và lưu thông tin này vào cơ sở dữ liệu.

Trước tiên, để có thể lấy được thông tin người dùng khi đăng nhập đã lưu vào session ở bài trước, chúng ta cần phải khởi tạo session, đặt đoạn code này ở đầu trang them-bai-viet.php

session_start();

Sau khi đã khởi tạo session, ta tiến hành lấy thông tin từ form và lưu vào cơ sở dữ liệu

<?php require_once("includes/connection.php"); ?>
<?php
	if (isset($_POST["btn_submit"])) {
		//lấy thông tin từ các form bằng phương thức POST
		$title = $_POST["title"];
		$content = $_POST["content"];
		$is_public = 0;
		if (isset($_POST["is_public"])) {
			$is_public = $_POST["is_public"];
		}
		
		$user_id = $_SESSION["user_id"];

		$sql = "INSERT INTO posts(title, content, user_id, is_public, createdate, updatedate ) VALUES ( '$title', '$content', '$user_id', '$is_public', now(), now())";
		// thực thi câu $sql với biến conn lấy từ file connection.php
		mysqli_query($conn,$sql);
		echo "Bài viết đã thêm thành công";
	}

?>

Ở đoạn code trên, chúng ta thực hiện việc khởi tạo kến nối đến cở sở dữ liệu, sau đó kiểm tra người dùng đã ấn nút Thêm bài viết hay chưa, nếu đã ấn rồi thì sẽ tiến hành lấy thông tin từ form như tiêu đề, nội dung, is_public, user_id (lấy từ session khi người dùng đăng nhập) và lưu vào cơ sở dữ liệu.

3. Toàn bộ code trang them-bai-viet.php

Như vậy toàn bộ đoạn code của trang them-thanh-vien.php sẽ có nội dung như sau :

<?php
	session_start(); 
	include "includes/header.php";
 ?>
<?php require_once("includes/connection.php"); ?>
<?php
	if (isset($_POST["btn_submit"])) {
		//lấy thông tin từ các form bằng phương thức POST
		$title = $_POST["title"];
		$content = $_POST["content"];
		$is_public = 0;
		if (isset($_POST["is_public"])) {
			$is_public = $_POST["is_public"];
		}
		
		$user_id = $_SESSION["user_id"];

		$sql = "INSERT INTO posts(title, content, user_id, is_public, createdate, updatedate ) VALUES ( '$title', '$content', '$user_id', '$is_public', now(), now())";
		// thực thi câu $sql với biến conn lấy từ file connection.php
		mysqli_query($conn,$sql);
		echo "Bài viết đã thêm thành công";
	}

?>

	<form action="them-bai-viet.php" method="post">
		<table>
			<tr>
				<td colspan="2"><h3>Thêm bài viết mới</h3></td>
			</tr>	
			<tr>
				<td nowrap="nowrap">Tiêu đề bài viết :</td>
				<td><input type="text" id="title" name="title"></td>
			</tr>
			<tr>
				<td nowrap="nowrap">Nội dung :</td>
				<td><textarea name="content" id="content" rows="10" cols="150"></textarea></td>
			</tr>
			<tr>
				<td nowrap="nowrap">Public bài viết ? :</td>
				<td><input type="checkbox" id="is_public" name="is_public" value="1"> public</td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" name="btn_submit" value="Thêm bài viết"></td>
			</tr>

		</table>
		
	</form>
<?php include "includes/footer.php" ?>

Các bạn thử thêm 1 bài viết và ấn nút Thêm bài viết để xem kết quả nhé.

Như vậy là chúng ta đã hoàn thành xong phần tạo trang Thêm bài viết để thêm 1 bài viết mới vào cơ sở dữ liệu của chúng ta. Trong lần tới mình sẽ hướng dẫn các bạn cách hiển thị nội dung bài viết ra bên ngoài giao diện web nhé.

Kết thúc bài viết, nếu bạn có bất kỳ thắc mắc nào thì để lại comment bên dưới, chúng ta sẽ cùng nhau thảo luận.

Chúc các bạn học tốt !

Nguồn: Kungfuphp.com