thiết kế website php

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

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

Gợi ý : Bạn là người mới và muốn tìm hiểu về Bitcoin nhưng không biết bắt đầu từ đâu? Click xem ngay Hướng Dẫn Đầu Tư Bitcoin Cho Người Mới nhé!

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. 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

Có ích

tạo form upload trong php

Tạo phân quyền cho website PHP – Tạo website bằng PHP (Phần 8)

Đi qua một loạt 7 phần trong chuỗi seri Tạo website bằng PHP, trong phần …

23 bình luận

  1.  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

  2. Bùi Nguyễn Hoàng Việt

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

    5d980d86b9b1588ac42e13d6.png

  3. 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?

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

  5. 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

  6. 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 ạ?

  7. $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 ạ!

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

  9. em muốn dùng select để public

    Public
    Only me

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

  10. 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

  11. $user_id = $_SESSION[“user_id”];

    em bị lỗi ở phần này ạ

Trả lời Nguyenhuu Trung Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *