Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: system powiadomien na stronie
Forum PHP.pl > Forum > PHP
Orzeszekk
Muszę zrobić na stronie system powiadomień. Taki Ala facebook. Wchodzisz na stronę i widzisz ile eventow cię dotyczyło.
Zastanawiam się jak to ugryźć.
mam dwie koncepcje.

Jedna to zrobić to na zasadzie prywatnych wiadomości. Kazda osoba której dotyczy to powiadomienie dostaje jego kopie.
Zapisują się w tabeli annoucements i po kluczu obcym jest odczytywane komu się powinno wyświetlić.

Druga opcja to żeby tabele annoucements i users połączyć relacja n:m. Wtedy powiadomienia by się nie dublowały.
Pozostaje problem wysłania powiadomień do całej grupy bo znowu jest duplikacja.

mozna próbować dodawać dodatkowe pole do tabeli wiążącej oznaczające strategie np 1 oznacza powiadomienie wysyłane do grupy o id z pola obok, 2 do konkretnego uzytkownika, 3 do adminow 4 do wszystkich itd. Samo powiadomienie miałoby swoje id, datę i pole ze stringiem zawierające zserializowane parametry (kazda może mieć inne) ladowalbym je jakas fabryka i każda miałaby swój sposób renderowania. Dobry pomysł?
Kostek.88
Nie wiem, czy dobrze rozumuję, ale wydaje mi się, że coś w ten deseń:

tabele

1) annoucement
- id
- title
- description

2) user

- id
- name
- email
- group_id

3) group

- id
- description

4) annoucement_to_user
- id
- annoucement_id
- user_id

5) annoucement_to_group
- id
- annoucement_id
- group_id

Wtedy po zalogowaniu się, w pierwszej kolejności ładowane są dane z tabeli annoucement_to_user (oczywiście JOIN z 2-ma pozostałymi itd.), następnie sprawdzenie, do jakich grup należy użytkownik i wyświetlenie danych z annoucement_to_group... wydaje mi się, że da się złączyć to ładnie w jedną całość (LEFT JOIN i RIGHT JOIN), ale teraz idę spać wink.gif Może podsunie Ci to jakąś myśl (w MySQL WorkBench ładnie rozrysuj wink.gif )
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.