10/10/2018, 13:21

Cho mình hỏi về code đếm số comment của bài viết bằng php

Mình đang làm 1 trang tin tức bằng php
CSDL của mình có bảng data lưu bài viết và bảng comment. Trong bảng comment có trường cm_post_id để đánh dấu cm nào thuộc bài viết nào. giờ mình muốn đếm tổng số comment của mỗi bài viết thì làm như thế nào mong các bạn giúp đỡ
loading ... viết 15:22 ngày 10/10/2018
có 2 cách.
1. Bác thêm luôn trường comment_count vào bảng post của bác. Mỗi lần 1 comment được publish thì bác tăng trường đó lên 1, cmt bị unpublish thì bác giảm xuống 1. Cách này ưu điểm là nhanh và không mắc công truy vấn vào bảng cmt
2. Cách hai là select count (comment_id) của bảng cmt where cm_post_id = id của post bác đang cần biết có bao nhiu cmt. Cách này mắc công truy vấn db chắc chết mệt với bác
ghewadi viết 15:21 ngày 10/10/2018
Mình cũng có ý định giống với cách 1 mà bạn gợi ý nhưng lại mắc ở chỗ viết code, không biết làm sao để mõi lần publish cái comment thì lại tăng cái chỉ số comment_count của đúng bài viết đó lên được, bạn có thể giúp mình cái code cụ thể không. Cảm ơn bạn nhiều
ngoc_ann_00 viết 15:32 ngày 10/10/2018
Được gửi bởi loading ...
có 2 cách.
1. Bác thêm luôn trường comment_count vào bảng post của bác. Mỗi lần 1 comment được publish thì bác tăng trường đó lên 1, cmt bị unpublish thì bác giảm xuống 1. Cách này ưu điểm là nhanh và không mắc công truy vấn vào bảng cmt
2. Cách hai là select count (comment_id) của bảng cmt where cm_post_id = id của post bác đang cần biết có bao nhiu cmt. Cách này mắc công truy vấn db chắc chết mệt với bác
@kuongnp : chỉ dẫn vầy mà bảo không cụ thể thì thật là hết thuốc.
phanvantuan134 viết 15:28 ngày 10/10/2018
Đây là code mình dùng:
$total = mysql_result ( mysql_query ( "SELECT COUNT(id) FROM comment WHERE baivietID=$id " ), 0 );
echo "$total, nguoi binh luan ";
Chúc Thành công.
ThietKeWebsite99 viết 15:28 ngày 10/10/2018
Được gửi bởi phanvantuan134
Đây là code mình dùng:
$total = mysql_result ( mysql_query ( "SELECT COUNT(id) FROM comment WHERE baivietID=$id " ), 0 );
echo "$total, nguoi binh luan ";
Chúc Thành công.
Chuẩn, nhanh chóng...........................
trannamcn viết 15:36 ngày 10/10/2018
Được gửi bởi loading ...
có 2 cách.
1. Bác thêm luôn trường comment_count vào bảng post của bác. Mỗi lần 1 comment được publish thì bác tăng trường đó lên 1, cmt bị unpublish thì bác giảm xuống 1. Cách này ưu điểm là nhanh và không mắc công truy vấn vào bảng cmt
2. Cách hai là select count (comment_id) của bảng cmt where cm_post_id = id của post bác đang cần biết có bao nhiu cmt. Cách này mắc công truy vấn db chắc chết mệt với bác
Dùng cách 1 sẽ tăng hiệu suất --> nhanh hơn --> đỡ cực DB --> viết truy vấn + 1 mỗi lần add record mới là ok thôi bác chủ.
luuanhquyen viết 15:36 ngày 10/10/2018
Khó nhất là ở cái đầu của chủ topic ấy vì lười nghĩ và lười làm quá, sao ko tự làm đi cái đã. Yêu cầu cũng dễ thôi chứ có gì khó khăn đâu.
Nếu lưu 1 trường lưu số comments vào bảng bài viết thì sẽ nhanh nhưng ko tối ưu csdl. Ko nhất thiết phải lưu 1 cột riêng như vậy nếu cần đếm cái gì cũng lưu thành 1 cột như vậy thì còn gì là cái csdl quan hệ nữa. Muốn nhanh thì ngoài thiết lập csdl ra còn nhiều cách khác nhau nữa còn csdl cái quan trọng nhất vẫn là chuẩn hóa. Lưu 1 cột như vậy mỗi lần thêm xóa comment lại phải chạy code đọc số comment hiện tại rồi lại thêm bớt như vậy nhanh chỗ này lại chậm vài chỗ khác rồi.
sonnb viết 15:22 ngày 10/10/2018
Kể ra chưa có ý tưởng hoặc chưa biết viết nó như thế nào nên đây hỏi cũng khó hướng dẫn thật.
Bài liên quan
0