Ở 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.
Mục lục
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 :
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 :
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. 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
cho e hỏi lỗi này là bị j v ạ
5d980d86b9b1588ac42e13d6.png
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
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?
dẹp mẹ đi viết bài chị mà coppy k cho thì để làm gì
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
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 ạ?
e xem tất cả tại đây nhé : https://kungfuphp.com/tag/tao-trang-web-php
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 ạ
$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 ạ!
e echo câu query ra rồi run trên phpmyadmin xem nó báo lỗi gì nhé
cảm ơn anh, em fix được rồi ạ :v
làm thế nào để dùng javascript bắt lỗi không nhập thông tin được vậy a?
cái này đang chạy trên server nên bạn cần dùng php để bắt lỗi nhé
e hiểu rồi, cảm ơn a!
em muốn dùng select để public
Public
Only me
làm sao để lấy giá trị trong opion ạ
e chỉ cần dùng biến post để lấy $_POST[“is_public”]
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
$user_id = $_SESSION[“user_id”];
em bị lỗi ở phần này ạ
bạn gửi thông báo lỗi lên đây mình xem
( ! ) Notice: Undefined index: user_id in C:\wamp64\www\website\admin\them-bai-viet.php on line 16
Mình cũng bị lỗi tương tự khi thêm bài viết.
đây là lỗi do nó chưa nhận được bất kỳ session nào lưu thông tin của user.
bạn nên thực hiện đăng nhập trước để nó lưu sessionm rồi hãy thêm bài viết thì mới có thông tin user nhé
Lỗi của bạn gặp do biến chưa được định nghĩa.
Có cách để tắt thông báo lỗi cho biến bằng cách thêm @ ở phía trước dấu $