10/10/2018, 11:42

[PHP] Gặp vấn đề với cách làm trang PM đơn giản

Mình có làm 1 trang gửi tin nội bộ bằng PHP, đại loại như là phần PM Inbox của các diễn đàn.
Nếu gửi giữa 2 người với nhau thì bình thường, không vấn đề gì.

Vấn đề ở đây là mình muốn gửi tin theo nhóm, khi gửi 1 tin đi thì mọi người trong nhóm sẽ nhận. Và phần tin đã gửi sẽ chỉ hiện thị 1 tin đã gửi cho cả nhóm. Phần này mình vẫn chưa làm được, mong anh em nào có kinh nghiệm tư vấn giúp mình thiết kê database như thế nào,hướng code ra sao để mình giải quyết.

Thanks mọi người
trinhdiep viết 13:57 ngày 10/10/2018
ban phải có trang quản lý nhóm nữa (cơ bản như: thêm sửa xóa, quyền mỗi thành viên, luật, ... bất cứ cái gì mà bạn nghĩ được)
vấn đề của bạn với tôi thì 1 nhóm giống một người dùng; chỉ khác là nhiều người có thể truy cập
việc gửi PM là insert bản ghi mà dích là tên nhóm thay vì tên một người
Khi người dùng duyệt PM thì thay vì tìm PM có đích là tên của chính họ ta tìm thêm PM của nhóm mà người dùng đó tham ra. Những ràng buộc khác thì giống như bất kì dạng quản lý nhóm người dùng nào.
thangnhomxep viết 13:52 ngày 10/10/2018
Được gửi bởi trinhdiep
ban phải có trang quản lý nhóm nữa (cơ bản như: thêm sửa xóa, quyền mỗi thành viên, luật, ... bất cứ cái gì mà bạn nghĩ được)
vấn đề của bạn với tôi thì 1 nhóm giống một người dùng; chỉ khác là nhiều người có thể truy cập
việc gửi PM là insert bản ghi mà dích là tên nhóm thay vì tên một người
Khi người dùng duyệt PM thì thay vì tìm PM có đích là tên của chính họ ta tìm thêm PM của nhóm mà người dùng đó tham ra. Những ràng buộc khác thì giống như bất kì dạng quản lý nhóm người dùng nào.
Mình cũng có tạo trang quản lý nhóm như thế rồi. Nhưng vấn đề là khi mình gửi tin vào nhóm đó, tin nhắn không chuyển đến các thành viên thuộc nhóm đó.

Mình đang không biết code thế nào để có thể lấy được tin nhắn đã gửi cho các thành viên thuộc nhóm đó.
vietnam_duy viết 13:55 ngày 10/10/2018
cai nay ban viet kho hieu qua
thangnhomxep viết 13:54 ngày 10/10/2018
Được gửi bởi vietnam_duy
cai nay ban viet kho hieu qua
Mình ví dụ cụ thể thế này. Cấu trúc dữ liệu của mình như sau, gồm 3 bảng (Bảng Thành viên, bảng quản lý nhóm, bảng quản lý tin đã gửi)
1) Table ThanhVien
ID TenThanhVien
1 ------TV1
...........................
6 ------TV6

2) Talbe NhomThanhVien
ID TenNhom ID_ThanhVienNhom
1 ------ Nhom1 ------ 1,2,3,4,5
Nhom1 có 5 thành viên (TV1,TV2,TV3,TV4,TV5)

Thành viên TV6 gửi tin cho Nhom1, thì trong database sẽ lưu lại record như sau:
3) Table TinGui
ID ID_NguoiGui ID_NguoiNhan ID_NhomNhan NoiDung
1 -------- 6 --------- null -------------- 1 -------- Test

Dữ liệu mình đã có như thế, viết code thế nào để, khi các thành viên trong nhóm đăng nhập thì họ sẽ nhận được tin nhắn là Test

Mình đang bị bí, mong mọi người giúp đỡ
Adam viết 13:55 ngày 10/10/2018
Làm vậy thì rối là đúng rồi.

1. ThanhVien(id,Mã thành viên,tên Thành viên, group_ID)
2. NhomThanhVien(group_id,tên nhóm,số thành viên).
3. TinGui(id,tiêu đề,nội dung,ngày gửi,người gửi).

Như vậy khi gửi tin nhắn cho nhóm A,duyệt table ThanhVien xem những thành viên nào có group_id trùng ID của nhóm A và tiến hành gửi.Một thành viên có thể tham gia 1 hay nhiều nhóm khác nhau tùy tình hình thực tế.
thangnhomxep viết 13:48 ngày 10/10/2018
Được gửi bởi Adam
Làm vậy thì rối là đúng rồi.

1. ThanhVien(id,Mã thành viên,tên Thành viên, group_ID)
2. NhomThanhVien(group_id,tên nhóm,số thành viên).
3. TinGui(id,tiêu đề,nội dung,ngày gửi,người gửi).

Như vậy khi gửi tin nhắn cho nhóm A,duyệt table ThanhVien xem những thành viên nào có group_id trùng ID của nhóm A và tiến hành gửi.Một thành viên có thể tham gia 1 hay nhiều nhóm khác nhau tùy tình hình thực tế.
Thanks bạn. Vấn đề của mình ở đây phức tạp hơn.

Mỗi thành viên có thể tạo nhóm riêng cho mình, giống như phần tạo nhóm gửi mail của google vậy. Nên Id nhóm sẽ không giống nhau.

Mình hiện tại chưa biết giải pháp để làm việc đó như thế nào cả.
sonnb viết 13:48 ngày 10/10/2018
Dù là họ tự tạo nhóm thì nhóm đó vẫn phải có group_id và người tạo ra nhóm này (hoặc thành viên) đều phải có group_id trùng với group_id được tạo, như vậy thì cách của bạn @Adam là phù hợp với bạn rồi. Mình không hiểu bạn đang muốn thế nào hoặc là bạn tự làm phức tạp hóa vấn đề.

Theo như bài 1 thì bạn ghi là gửi message theo nhóm chứ không muốn gửi theo user (để user mới có thể đọc được?). Như vậy bạn gửi theo group_id bình thường thôi, user login vào check group_id đó có PM ko, có thì hiện ra (đồng thời ghi log đã đọc nếu muốn), không thì thôi.
thangnhomxep viết 13:54 ngày 10/10/2018
Được gửi bởi sonnb
Dù là họ tự tạo nhóm thì nhóm đó vẫn phải có group_id và người tạo ra nhóm này (hoặc thành viên) đều phải có group_id trùng với group_id được tạo, như vậy thì cách của bạn @Adam là phù hợp với bạn rồi. Mình không hiểu bạn đang muốn thế nào hoặc là bạn tự làm phức tạp hóa vấn đề.

Theo như bài 1 thì bạn ghi là gửi message theo nhóm chứ không muốn gửi theo user (để user mới có thể đọc được?). Như vậy bạn gửi theo group_id bình thường thôi, user login vào check group_id đó có PM ko, có thì hiện ra (đồng thời ghi log đã đọc nếu muốn), không thì thôi.
Không được. Bây giờ mình thấy cách của mình phức tạp quá. Có ai có thể thiết kế lại database cho mình theo ý mình giúp không.

Tạo 1 trang gửi tin theo nhóm giữa các thành viên. Trong đó các thành viên sau khi login vào có thể tự tạo nhóm riêng cho mình, để dễ gửi tin.
Adam viết 13:45 ngày 10/10/2018
Được gửi bởi thangnhomxep
Không được. Bây giờ mình thấy cách của mình phức tạp quá. Có ai có thể thiết kế lại database cho mình theo ý mình giúp không.

Tạo 1 trang gửi tin theo nhóm giữa các thành viên. Trong đó các thành viên sau khi login vào có thể tự tạo nhóm riêng cho mình, để dễ gửi tin.
Bác này suy nghĩ cao siêu quá.
Bài liên quan
0