Tôi đang xây dựng một trang mạng xã hội trong PHP/MySQL/jQuery. Khi người dùng đăng nhập vào trang web của tôi, tôi muốn truy vấn DB và nhận thông báo quản trị nếu có. Đây sẽ là một hộp thông báo hiển thị trên trang cho tất cả người dùng nhưng nó sẽ có một số X để nhấp vào đó và không hiển thị lại cho đến khi quản trị viên đăng thông báo mới. Vì vậy, nếu bạn không bao giờ nhấp vào X và có thông báo thông báo tồn tại trong db, nó sẽ luôn hiển thị hộp thông báo này trên trang của bạn, tuy nhiên nếu bạn đã cli9ck X để đóng hộp, sau đó bạn quay trở lại trang nó sẽ không ở đó, trừ khi có một thông báo quản trị mới được đăng.Cách tốt nhất để hiển thị thông báo quản trị cho một số người dùng nhất định?
Tôi biết có một số cách để làm điều này nhưng tôi đang tìm cách hiệu quả nhất.
Một ý tưởng tôi có, nếu tôi thêm trường mysql thêm vào bảng của người dùng "admin_message" và đánh dấu là 0, sau đó khi tôi đăng thông báo quản trị mới, nó sẽ thay đổi bản ghi cho mọi người dùng thành 1, nếu quản trị viên tin nhắn được đặt thành 1 sau đó nó hiển thị trên trang của người dùng. Sau đó, khi người dùng nhấp vào X để ẩn hộp, nó sẽ cập nhật có hàng bảng người dùng và chnage giá trị trở lại 0.
Một ý tưởng khác là sử dụng cookie để kiểm tra xem người dùng đã chọn ẩn thư chưa , tôi nghĩ rằng điều này sẽ nhanh hơn nhưng có thể không tốt, vì người dùng có thể đăng nhập bằng các máy tính khác nhau và nếu một thông báo mới được hiển thị, họ có thể không nhìn thấy nó ngay lập tức.
Vì vậy, tôi chỉ tự hỏi có nên sử dụng trường cơ sở dữ liệu bổ sung không? Nếu tôi có 1.000.000 người dùng, khi tôi đăng một thông báo quản trị mới, thì tôi cần phải cập nhật 1.000.000 hàng để đảm bảo mọi người có thể xem tin nhắn. Có cách nào tốt hơn? Ngoài ra khi người dùng đăng nhập vào trang web của tôi, tôi sẽ sử dụng một phiên để lưu trữ giá trị của họ nhìn thấy hoặc ẩn thư thay vì xem xét DB trên mỗi lần tải trang.
CẬP NHẬT
Xin lỗi tôi nghĩ rằng bài viết của tôi có thể về được một chút bối rối hay không rõ ràng về chính xác những gì tôi có nghĩa là bởi vì hầu hết các câu trả lời sẽ được đáp với một hệ thống nhắn tin mà điều này không phải là mọi thứ gần.
Hãy quên đi từ thông báo, tôi sẽ cố giải thích bằng một từ khác. Giả sử có 1 quản trị viên trên trang web, đó là quản trị viên duy nhất có thể đăng thông báo cho người dùng xem. Người dùng sẽ chỉ thấy 1 thư, nếu có 2352345234 thư được đăng trong toàn bộ thời gian của trang web, điều đó không quan trọng, họ sẽ chỉ thấy 1 thư, thư mới nhất.
Bây giờ một số người dùng đăng nhập và thấy thông báo "div" trên trang có thể cảm thấy mệt mỏi khi nhìn vào nó, vì vậy họ sẽ có thể ẩn nó khỏi bao giờ hiển thị lại.
Nó sẽ đơn giản như có hoặc không để hiển thị thông báo này trên trang đó. Tuy nhiên, nếu tôi quyết định tôi cần đăng thông báo quản trị mới để tất cả người dùng nhìn thấy, thì ngay cả người dùng đã chọn ẩn và không hiển thị thông báo quản trị sẽ vẫn thấy thông báo quản trị đó cho đến khi họ chọn không bao giờ thấy lại nó. Quay lại đầu trang
Thực ra nó không phức tạp lắm. Nó sẽ là 1 admin trên trang web và nó sẽ chỉ hiển thị 1 tin nhắn, thông điệp mới nhất sẽ cho mọi người dùng xem, tôi chỉ cần một cách để người dùng ẩn hộp tin nhắn nếu họ chọn hiển thị trên trang đó và một cách để tôi ép buộc hộp ẩn hiển thị nếu tôi đăng một tin nhắn mới. Vì vậy, tôi không cần lưu trữ bất kỳ ID người dùng nào thuộc bất kỳ loại nào và tôi không cần truy vấn mã số đặc biệt – JasonDavis