Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyświetlanie newsów dla użytkowników systemu - optymalizacja
Forum PHP.pl > Forum > PHP
adami
mam crm własnej produkcji. mam w nim uzytkowników ze statusami np.: 1=aktywny, 2 = nieaktywny

chcę napisać jakieś proste narzędzie do wyświetlania dla uzytkowników komunikatów od admina. po zalogowaniu użytkownika, wyskakuje mu okienko z informacją np. "1 nowa wiadomość od admina" + treść + kliknij "potwierdzam, że przeczytałęm i rozumiem". potwierdzenia odkłądają się w bazie.

przychodzi mi do głowy rozwiązanie - ale bardzo toporne i z dużą ilością zapytań... może ktoś będzie miał pomysł na lepsze?

mój pomysł:

1. tabela "komunikaty": id_komunikaty, news_title, news_content, timestamp_created
2. tabela "komunikaty_log": id_komunikaty, id_user, status (0 niepotwierdzony, 1 potwierdzony), timestamp_update

skrypt:
- dla wszystkich komunikatów sprawdza, które są potiwredzone dla danego uzytkownika - te niepotwierdzone wyświetla jako "potwierdź", nowe potwierdzenia zapisuje do "komunikaty_log"

wady:
- aby komunikaty wyskakiwały na bieżąco, myszę uruchamiać skrypt przy każdym przeładowaniu strony
- gdy za miesiąc dodam nowego użytkownika - wyświetlą mu się wszystkie stare komunikaty
- w sumie: dużo zapytań i wykonywania skryptów jak na tak prostą funckjonalność....

Czy ktoś może będzie miał na to lepszy pomysł?
buliq
Cytat
gdy za miesiąc dodam nowego użytkownika - wyświetlą mu się wszystkie stare komunikaty

questionmark.gif jak questionmark.gif

Nie ma innej możliwości, jeżeli chcesz zachować "szablony" (które możesz też trzymać w plikach)
Z tabeli "log" będziesz pobierać tylko dla określonego usera komunikaty.

Możesz też w tabelu "uzytkowników" dodać kolumnę "komunikaty_cache" i jeżeli wartość tej kolumny jest inna od 0 to wykonuje dodatkowe zapytanie do "komunikatów". Jak nie ma komunikatów do wyświetlenia to update dla tej kolumny.
adami
nie bardzo rozumiem ideę kolumny "komunikaty_cache". możesz bardziej łopatologicznie?
buliq
jeżeli boisz się ilości zapytań, to w tabeli użytkownika dodajesz tą właśnie kolumnę. Tabelę userów i tak odpytujesz, pobranie nowej kolumny nie stanowi problemu.

W momencie dodawania komunikatu do usera, ustawiasz wartość kolumny komunikat_cache na 1 lub inna wartość różną od 0.
W momencie ustawiania, ze usera akceptuje i nie ma już więcej komunikatów do akceptacji ustawiasz cache na 0

sprawdzasz wartość cache i jeżeli równe od 0 to wykonujesz zapytanie pobierające komunikaty.

Nie wiem czy jest sens bronić się przed tym zapytaniem przy każdym uruchomieniu skryptu.
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.