Tạo trang Thêm bài viết – Tạo website bằng PHP (phần 5)

thiết kế website php

Ở 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 :

Gợi ý: Bạn đang quan tâm đến Bitcoin? Tìm hiểu ngay Bitcoin Toàn Tập Cho Người Mới nhé!

<?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. Nếu thấy bài viết hay thì đừng quên ấn nút  share bên dưới để mọi người cùng nhau học nhé.

 

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

Nguồn : kungfuphp.com

Chia sẻ nhanh bài viết ↓

Hieu

"Những người điên rồ tới mức nghĩ mình có thể thay đổi được thế giới chính là những người có thể làm được điều đó" _ Steve Job

Subscribe
Notify of
guest

23 Bình Luận
Newest
Oldest Most Voted
Inline Feedbacks
Xem Tất Cả Bình Luận
nguyen lan
nguyen lan
3 năm trước

 include(): Failed opening ‘includes/header.php’ for inclusion (include_path=’C:\xampp\php\PEAR’) in C:\xampp\htdocs\shopbe\admin\them-bai-viet.php on line 3
 require_once(includes/connection.php): Failed to open stream: No such file or directory in C:\xampp\htdocs\shopbe\admin\them-bai-viet.php on line 5

minh bi noi o 2 dong nay mong a giup e voi aj

Bùi Nguyễn Hoàng Việt
Bùi Nguyễn Hoàng Việt
6 năm trước

cho e hỏi lỗi này là bị j v ạ

5d980d86b9b1588ac42e13d6.png

hoang hieu
hoang hieu
Phản hồi đến  Bùi Nguyễn Hoàng Việt
6 năm trước

Kiểm tra xem cột user_id có tồn tại trong db chưa hoặc giá trị user_id truyền vào có đúng chưa

aler
aler
6 năm trước

Warning: include(includes/header.php): failed to open stream: No such file or directory in C:\xampp\htdocs\Androidweb\admin\them-bai-viet.php on line 3

Warning: include(): Failed opening ‘includes/header.php’ for inclusion (include_path=’C:\xampp\php\PEAR’) in C:\xampp\htdocs\Androidweb\admin\them-bai-viet.php on line 3

Warning: require_once(includes/connection.php): failed to open stream: No such file or directory in C:\xampp\htdocs\Androidweb\admin\them-bai-viet.php on line 5

Fatal error: require_once(): Failed opening required ‘includes/connection.php’ (include_path=’C:\xampp\php\PEAR’) in C:\xampp\htdocs\Androidweb\admin\them-bai-viet.php on line 5

lỗi này là sao ạ ad?

phiền phức
7 năm trước

dẹp mẹ đi viết bài chị mà coppy k cho thì để làm gì

Mai thế Hùng
Mai thế Hùng
7 năm trước

làm sao lấy đc id người đăng nhỉ mình làm nó toàn user_id không đc xác đinh

Hằng Lê
Hằng Lê
7 năm trước

anh ơi. sao em không tìm được file hướng dẫn quản lí thành viên của bài viết sau bài này ạ?

Hằng Lê
Hằng Lê
Phản hồi đến  Hieu
7 năm trước

anh ơi.sao hôm trước em chạy ok nhưng hôm chạy nó lại báo lỗi dòng 15 ý là k lấy được id người đăng ạ

lapnv
lapnv
7 năm trước

$content có kiểu dự liệu là TEXT(65,535 ký tự), nhưng khi thêm chuỗi khoảng 500 ký tự, csdl ko lưu đc.
em bị lỗi phần này ạ!

lapnv
lapnv
Phản hồi đến  Hieu
7 năm trước

cảm ơn anh, em fix được rồi ạ :v

longhb
7 năm trước

làm thế nào để dùng javascript bắt lỗi không nhập thông tin được vậy a?

longhb
Phản hồi đến  Hieu
7 năm trước

e hiểu rồi, cảm ơn a!

thịnh
thịnh
8 năm trước

em muốn dùng select để public

Public
Only me

làm sao để lấy giá trị trong opion ạ

Nguyenhuu Trung
9 năm trước

ad ơi mình thêm bài viết nhưng nó không lưu vào csdl ad giúp mình với

23
0
Bạn có ý kiến về bài viết, hãy để lại bình luận nhé!x
()
x