tạo form upload trong php

Tạo trang hiển thị nội dung bài viết – Tạo website bằng PHP (phần 7)

Sau khi đã tạo xong trang hiển thị danh sách bài viết, thì trong bài này mình sẽ tiếp tục hướng dẫn các bạn cách tạo trang hiển thị nội dung bài viết bằng PHP. Các bạn lưu ý là những bài viết của mình thường ít chú tâm đến công đoạn chỉnh sửa, styling cho website đẹp bắt mắt bằng HTML, CSS vì những điều này bạn có thể chỉnh sau khi đã nắm được cách thức tạo website bằng PHP thông qua các bài viết của mình. Vì thế giao diện có xấu xí thì các bạn cũng bỏ qua 🙂

TẠO TRANG HIỂN THỊ NỘI DUNG BÀI VIẾT

Nội dung của chính của bài hướng dẫn hôm nay bao gồm 3 phần:

  1. Ôn lại bài cũ
  2. Thiết kế giao diện trang hiển thị nội dung bài viết
  3. Thực hiện truy vấn thông tin và hiển thị nội dung bài viết

Ôn lại bài cũ

Ở bài hôm trước Tạo trang hiển thị danh sách bài viết, chúng ta đã hoàn thành cơ bản phần hiển thị danh sách bài viết lấy từ cơ sở dữ liệu ra ngoài trang index, và ở dưới mỗi bài hiển thị, chúng ta có thêm đường link là Xem thêm, để khi người ta ấn vào sẽ nhảy sang trang display.php với tham số truyền vào là id của bài viết.

Trong bài viết hôm nay thì chúng ta sẽ tạo trang display.php và hứng tham số id truyền vào này để thực hiện truy vấn thông tin và hiển thị nội dung bài viết.

Thiết kế giao diện trang hiển thị nội dung bài viết

Tại thư mục gốc của folder website mà chúng ta đã tạo ra trong các bài trước, các bạn tạo một file mới và đặt tên là display.php như hình sau

tạo trang display, trang hiển thị nội dung bài viết

Ở file này, chúng ta sẽ có nội dung như sau :

<?php require_once("includes/connection.php"); ?>
<?php include "includes/header.php" ?>
			<div class="innertube">
			</div>
		</main>
	<?php include "includes/menu.php" ?>
<?php include "includes/footer.php" ?>

Các bạn để ý, ở file display.php này so với file index.php sẽ có sự khác nhau nhỏ nhỏ ở đoạn

<?php include "includes/menu.php" ?>

Đó chính là mình đã copy toàn bộ đoạn code html tĩnh là

<nav>
	<div class="innertube">
		<h3>Right heading</h3>
		<ul>
			<li><a href="#">Link 1</a></li>
			<li><a href="#">Link 2</a></li>
			<li><a href="#">Link 3</a></li>
			<li><a href="#">Link 4</a></li>
			<li><a href="#">Link 5</a></li>
		</ul>
		<h3>Right heading</h3>
		<ul>
			<li><a href="#">Link 1</a></li>
			<li><a href="#">Link 2</a></li>
			<li><a href="#">Link 3</a></li>
			<li><a href="#">Link 4</a></li>
			<li><a href="#">Link 5</a></li>
		</ul>
		<h3>Right heading</h3>
		<ul>
			<li><a href="#">Link 1</a></li>
			<li><a href="#">Link 2</a></li>
			<li><a href="#">Link 3</a></li>
			<li><a href="#">Link 4</a></li>
			<li><a href="#">Link 5</a></li>
		</ul>
	</div>
</nav>

bỏ vào file includes/menu.php, sau đó trong file display.php mình chỉ include file menu này vào để nhìn cho code gọn hơn, đỡ rồi rắm chứ không có gì phức tạp cả.

menu trang hiển thị nội dung bài viết

Giờ thì các bạn vào trang index.php và ấn vào link Xem thêm. Các bạn sẽ thấy hiện thị ra trang display.php trống trơn, đó là bởi vì chúng ta chỉ mới tạo giao diện chứ chưa thực hiện truy vấn lấy thông tin bài viết gì cả.

Thực hiện truy vấn thông tin và hiển thị nội dung bài viết

Phần này mình sẽ hướng dẫn các bạn thực hiện hiển thị nội dung bài viết chi tiết như sau.

Đầu tiên các bạn để ý rằng khi chúng ta ấn vào link Xem thêm, ta sẽ được điều hướng tới trang display.php với địa chỉ url có nội dung như sau

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é!

localhost/website/display.php?id=xxx

Ở đây, xxx chính là tham số id của bài viết mà chúng ta đã truyền vào ở bài viết trước. Bây giờ chúng ta sẽ thực hiện thấy biến này bằng phương thức GET như sau

$id = intval($_GET['id']);

Sau khi đã lấy được tham số id bài viết, thì ta sẽ thực hiện viết câu query truy vấn thông tin nội dung bài viết từ cơ sở dũ liệu thông qua tham số id này.

// Lấy ra nội dung bài viết theo điều kiện id
$sql = "select * from posts where id = $id";
// Thực hiện truy vấn data thông qua hàm mysqli_query
$query = mysqli_query($conn,$sql);

Sau khi đã thực thi câu query và lấy dữ liệu trả về, ta sẽ tiếp tục hiển thị dữ liệu này ra trang display.php như sau

<div class="innertube">
<?php 
	while ( $data = mysqli_fetch_array($query) ) {
?>
	<h3><?php echo $data['title']; ?></h3></div></ br>
	<i> Ngày tạo : <?php echo $data['createdate']; ?></i>
	<p><?php echo $data['content']; ?></p>
<?php } ?>
</div>

Ở đoạn code trên, chúng ta sẽ echo ra các thông tin bao gồm tiêu đề bài viết (title), ngày tạo bài viết (createdae), và nội dung chính của bài viết (content)

Như vậy, toàn bộ nội dung của trang hiển thị nội dung bài viết sẽ như dưới đây:

<?php require_once("includes/connection.php"); ?>
<?php include "includes/header.php" ?>
<?php
	$id = -1;
	if (isset($_GET["id"])) {
		$id = intval($_GET['id']);
	}
	// Lấy ra nội dung bài viết theo điều kiện id
	$sql = "select * from posts where id = $id";
	// Thực hiện truy vấn data thông qua hàm mysqli_query
	$query = mysqli_query($conn,$sql);
?>
			<div class="innertube">
			<?php 
				while ( $data = mysqli_fetch_array($query) ) {
			?>
				<h3><?php echo $data['title']; ?></h3></div></ br>
				<i> Ngày tạo : <?php echo $data['createdate']; ?></i>
				<p><?php echo $data['content']; ?></p>
			<?php } ?>
			</div>
		</main>
	<?php include "includes/menu.php" ?>
<?php include "includes/footer.php" ?>

Giờ thì các bạn vào lại trang index.php và ấn vào link Xem thêm của một bài viết bất kì, sẽ được chuyển hướng sang trang display.php và hiển thị toàn bộ thông tin đầy đủ của bài viết đó như dưới đây

trang hiển thị nội dung bài viết với thông tin đầy đủ

Tổng kết

Kết thúc bài viết hôm nay, tuy khá dài nhưng bản chất rất đơn giản, chỉ là chúng ta lấy tham số id truyền trên thanh địa chỉ của browser qua phương thức $_GET, sau đó thực hiện truy vấn và hiển thị dữ liệu thông qua tham số id này.

Nếu bạn có bất kỳ thắc mắc nào thì để lại bình luận bên dưới bài này nhé. Nếu bạn muốn cập nhật những bài viết mới nhất từ Kungfu PHP thì để lại thông tin dưới form này và ấn Đăng ký nhé.

 

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 …

Subscribe
Notify of
guest

26 Bình Luận
Inline Feedbacks
Xem Tất Cả Bình Luận
Khoa
Khoa
20 ngày trước

Uncaught TypeError: mysqli_fetch_array(): Argument #1 ($result) must be of type mysqli_result, bool given in E:\website\index.php:16 Stack trace: #0 E:\website\index.php(16): mysqli_fetch_array(false) #1 {main} thrown in E:\website\index.php on line 16 lỗi này là sao v admin

Minh
Minh
2 năm trước

a cho e hỏi làm sao mà ngắt dòng, chèn thêm ảnh và bôi đen cho cho 1 dòng chữ bất kì trong nội dung chính ạ?

Thanh
Thanh
2 năm trước

Anh ơi cột id em không để tăng tự động mà có dạng “SP001” thì phải làm sao ạ. Hình như hướng dẫn này chỉ áp dụng cho dữ liệu số :((

Thanh
Thanh
Phản hồi đến  Thanh
2 năm trước

Anh ơi cột id em không để tăng tự động mà có dạng “SP001” thì phải làm sao ạ. Hình như hướng dẫn này chỉ áp dụng cho dữ liệu số :((
Update: Em sửa được rồi. Ở dòng $sql bỏ $ trong cặp dấu ‘ là xong. Cho ai gặp giống em.

Nguyễn Công Hoàng
Nguyễn Công Hoàng
2 năm trước

ad ơi tạo bài chỉnh sửa thông tin bài viết thêm đi. Thanks ad

đỗ anh
đỗ anh
2 năm trước

a có bài nào hướng dẫn up sách dạng file tải lên và xem dạng pdf có nút tải về cho người dùng không ạ em cảm ơn

tontanit
tontanit
3 năm trước

$id = -1;

Cho $id = -1; là sao vậy Admin

hoang hieu
hoang hieu
Phản hồi đến  tontanit
3 năm trước

Id = -1 tức là ko tồn tại id bài viết nào. Vì id nhỏ nhất là 0 rồi

tontanit
tontanit
3 năm trước

Bài viết của anh hay quá, rất hiểu và làm theo… chúc anh luôn khỏe, tiếp tục có những bài viết hay phục vụ cộng đồng thiết kế web.
Mình cũng thống nhất với admin, là tập trung vào code PHP , Mysql… chứ không cần thiết tập trung quá nhiều về giao diện của web, có thể để chỉnh sửa sau, sau khi đã nắm vững PHP

hoang hieu
hoang hieu
Phản hồi đến  tontanit
3 năm trước

Cám ơn những lời chúc cùa em nhé, a cũng chúc gặt hái nhiều thành công nhé

thắng
thắng
4 năm trước

e code theo như a mà soa nó không hiển thị nội dung lên v a???

nhật hạ
Phản hồi đến  thắng
3 năm trước

giống như bạn vẫn k hiện gì ra cả

nhật hạ
Phản hồi đến  thắng
3 năm trước

localhost/website/display.php?id=xxx
bạn nên thêm bài viết vào cơ sở dữ liệu.
và thay xxx bằng id bài viết đó thì sẽ ra được ak

Lộc Nguyễn
Lộc Nguyễn
4 năm trước

Anh cho em hỏi sao em chèn ảnh vào bài viết lúc hiển thị lại k có ảnh ạ

Lộc Nguyễn
Lộc Nguyễn
Phản hồi đến  Hiếu
4 năm trước

Em chèn ảnh vào mục thêm bài viết ,lúc hiển thị nội dung thì k có ảnh

Lộc Nguyễn
Lộc Nguyễn
Phản hồi đến  Hiếu
4 năm trước

nó ra ntn trên database anh ak

Lộc Nguyễn
Lộc Nguyễn
Phản hồi đến  Lộc Nguyễn
4 năm trước
Tuấn Kiệt
Tuấn Kiệt
4 năm trước

a cho e hỏi là làm sao để cho tên từ trong dữ liệu users vào
$query = mysqli_query($conn,$sql);

?>

Ngày tạo :

Minh Clear
5 năm trước

Ngoài pưhương thức $_GET ra thì còn dùng phương thức nào tốt hơn nữa không anh.

Minh Clear
Phản hồi đến  Hiếu
5 năm trước

ok thank anh.
Em đang làm web tới phần hiển thị dữ liệu mà không biết làm kiểu gì ngoài lấy thông tin từ URl thì gặp bài của anh.

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