10/10/2018, 09:17

Tin được xem nhiều nhất, viết code bằng PHP như thế nào?

Mình đang làm 1 trang web trong đó có phần tin được xem nhiều nhất. Mình không biết phải làm như thế nào cả? Các bạn giúp mình với. Càng chi tiết càng tốt vì mình đang tự học ngôn ngữ này. Cám ơn các bạn rất nhiều
Vô Thin viết 11:24 ngày 10/10/2018
Được gửi bởi hoatuyet1987
Mình đang làm 1 trang web trong đó có phần tin được xem nhiều nhất. Mình không biết phải làm như thế nào cả? Các bạn giúp mình với. Càng chi tiết càng tốt vì mình đang tự học ngôn ngữ này. Cám ơn các bạn rất nhiều
Không rõ bạn đã tự học được đến đâu nên mình chỉ có thể nói sơ sơ khái quát về cách thức mà bạn nên nghĩ đến khi làm theo.

Ví dụ: bạn có một mẩu tin (bài viết) nhan đề "Làm sao biết được tin nào được xem nhiều nhất". Khi lưu vào cơ sở dữ liệu nó sẽ có một số ID duy nhất để phân biệt với bài viết khác.

Mình giả sử bạn có table đơn giản sau để lưu bài viết của bạn

table posts
Code:
id (kiểu integer)
tieu_de_tin (kiểu char hoặc varchar)
noi_dung_tin (kiểu text)
ngay_thang (kiểu datetime)
luot_xem (kiểu integer)
Khi bạn mới nhập bài lưu vào database thì luot_xem sẽ được bạn gán bằng 0 với câu lệnh SQL là "INSERT INTO ...." (bạn tự đọc sách).

Và trên trang web thì bạn hiển thị bài viết theo kiểu như sau:

Code:
http://tenmiencuatui.com/display.php?post_id=123
Dĩ nhiên là trước đó, trên trang HTML của bạn sẽ có cái tiêu đề kia hiện lên và nếu xem mã HTML của nó sẽ là:

Code:
<a href="http://tenmiencuatui.com/display.php?post_id=123">Làm sao biết được tin nào được xem nhiều nhất</a>
(Giả sử rằng bài viết mình nói trên có số ID123)

Như vậy, trong file display.php bạn phải có lệnh xử lý là khi bạn đọc DB lấy bài viết lên thì đồng thời bạn cập nhật luôn nó bằng một câu lệnh SQL dạng "UPDATE ...." (bạn từ đọc sách) để luot_xem của nó được cộng thêm 1.

Và dĩ nhiên, khi tất cả các bài viết đều có lượt xem (nhỏ nhất =0, lớn nhất thì tùy), bạn có thể dùng câu lệnh SQL để lấy được bài viết nào có luot_xem là lớn nhất. Câu lệnh SQL gần gần như là: SELECT Max(luot_xem) FROM posts

Okie?
sacroyant viết 11:32 ngày 10/10/2018
Được gửi bởi superthin
...
Như vậy, trong file display.php bạn phải có lệnh xử lý là khi bạn đọc DB lấy bài viết lên thì đồng thời bạn cập nhật luôn nó bằng một câu lệnh SQL dạng "UPDATE ...." (bạn từ đọc sách) để luot_xem của nó được cộng thêm 1.
...

Bác nhầm. Chỗ này không phải update lên 1 đơn vị mà phải là cộng thêm 1 số random từ 1 đến 100
kiem_bo viết 11:19 ngày 10/10/2018
tại sao phải random vậy tôi nghĩ nó dùng đếm lượt xem mà. Lở trường hợp người dùng xem bài đó nhiều mà random toàn 1 thì sao còn mẫu tin ít người đọc mà random lên đến 100 thì chết
herofit viết 11:24 ngày 10/10/2018
Được gửi bởi kiem_bo
tại sao phải random vậy tôi nghĩ nó dùng đếm lượt xem mà. Lở trường hợp người dùng xem bài đó nhiều mà random toàn 1 thì sao còn mẫu tin ít người đọc mà random lên đến 100 thì chết
bác ấy đùa, nói mánh mấy trang tin tức thôi )
TheHeTre viết 11:23 ngày 10/10/2018
Trong một số trường hợp với site có lượt View là rất lớn thì việc cập nhật số lần đọc cũng là vấn đề nan giải. Không phải lúc nào 1 người vào cũng update.

Nếu các đồng chí có kinh nghiệm hoặc giải pháp nào mời thảo luận luôn ở đây.
BoTayConGaQuay viết 11:30 ngày 10/10/2018
Được gửi bởi TheHeTre
Trong một số trường hợp với site có lượt View là rất lớn thì việc cập nhật số lần đọc cũng là vấn đề nan giải. Không phải lúc nào 1 người vào cũng update.

Nếu các đồng chí có kinh nghiệm hoặc giải pháp nào mời thảo luận luôn ở đây.
Ờ, đúng rồi, với 1 site chỉ cần vài trăm người online mà update db liên tục thế thì server nó sẽ bốc khói

Tui chỉ biết sơ sơ về .NET chứ không rành về php, giải pháp của tui là tạo 1 table temp, gồm 2 columns là ID và Count (là column chứa số lượt xem), sau đó write tất tần tật cái table temp đó ra 1 file xml (serialized). Khi cần hiển thị tin xem nhiều nhất thì đầu tiên là tui sẽ đọc cái table đó lên (đọc từ xml), sau đó select top 10 và order by Count (DESC) thì nó sẽ ra 1 dãy ID của 10 thằng được xem nhiều nhất => dùng cái dãy đó mà query DB. Khi cần update lại số Count thì cũng đọc cái table đó lên và gọi lệnh Update.

Do table đó sẽ được đọc/ghi nhiều lần nên tui chỉ đọc 1 lần duy nhất sau đó cho nó vào bộ nhớ của web (bên .NET là Application), mỗi khi có nhu cầu update column Count thì cứ update cái table trong bộ nhớ đó, và cứ sau mỗi chu kỳ nhất định (ví dụ 20 phút) là tui sẽ write ra file xml (đề phòng Application bị restart sẽ bị mất giá trị của table nằm trong đó)
hoatuyet1987 viết 11:22 ngày 10/10/2018
Cảm động quá, rất cám ơn các bạn đã cho ý kiến. Thực sự thì kiến thức PHP của mình là con số 0.Mình đang xin thực tập cho 1 công ty lập trình web bằng PHP(mà không biết gì về PHP hết!!). Trang web mình làm có 2 phần. 1 phần là những tin xem nhiều nhất và 1 phần là tin được phản hồi nhiều nhất. Phần tin xem nhiều nhất thì mình đã giải quyết xong. Phần còn lại thì bó tay rồi!Help me!
Trong database có 1 table tên là review, mình định tạo thêm 1 field là review_num để đếm số bài phản hồi dựa trên field event_id. Mình không biết làm thế nào để cột review_num hoạt động được. Mình dùng phần mềm xampp để quản lý database. Giúp mình với, cám ơn các bạn rất nhiều
sacroyant viết 11:33 ngày 10/10/2018
Mỗi phản hồi phải có 1 trường để phân biệt nó là review của tin tức nào, chẳng hạn tên trường mã tin tức là NewsID, khi đó, bạn lấy giá trị NewsID của 1 tin tức và add cho các review của tin tức đó.

Để tính số review cho 1 tin, bạn select count trong bảng review với NewsID tương ứng.
ohisee oh i see viết 11:33 ngày 10/10/2018
Được gửi bởi hoatuyet1987
Mình đang làm 1 trang web trong đó có phần tin được xem nhiều nhất. Mình không biết phải làm như thế nào cả? Các bạn giúp mình với. Càng chi tiết càng tốt vì mình đang tự học ngôn ngữ này. Cám ơn các bạn rất nhiều
Sẽ là tốt hơn nếu bạn trả lời được câu hỏi sau: Giả sử bạn có 1 website tĩnh (Toàn HTML) thì làm cách nào biết được trang nào được view nhiều nhất

Lẽ nào bản thân web sơ-vơ không quản lý vấn đề đó
Bài liên quan
0