Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php+mysql] Oznaczania przeczytanych postów.
Wykrywacz
post 27.02.2007, 16:00:16
Post #1





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Zastanawiam się w jaki sposób oznaczać nieprzeczytane wiadomości użytkowników.
Teoretycznie można oznaczać przeczytane w pliku cookie usera.

Ale zastanawiam się jakie znacie inne rozwiązania, bo przy tym użyciu cookie pojawia się problem nie akceptowanie przez przeglądarki i ew. utrata pliku.

Zastanawiam się czy nie lepiej było by to ewidencjonować w bazie, ale to ozacza że każdy użytkownik musi miec swoją tabelę. Choć wydaje się to dość proste, bo oznacza realnie jednego select i jednego inserta, ale generuje pewne obciążenie jeżeli mamy paruset usererów i przy tym paredziesiątysięcy postów. Bo oznacza to pareset tabel.

Ten post edytował Wykrywacz 27.02.2007, 16:00:39
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
peter13135
post 3.08.2009, 22:04:04
Post #2





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


odświeżam temat, również chciałbym osiągnąć ten sam efekt

ja myślałem nad takim rozwiązaniem (które już było przedstawione) że są 3 kolumny
id, user_id, unread_post

z tym że jak ktoś słusznie zauważył - po napisaniu posta tworzy sie tyle rekordów co ilość użytkowników

inna możliwość (którą sami ocencie, niewiem czy wypali)

do tabeli userów dodać kolumne unread_posts, i dodawać do niej po przecinku id postów, wtedy zapytanie będzie jedno

  1. UPDATE `users` SET `unread_posts`=`unread_posts`+',(id_posta)' WHERE `user_id`!=(id_uzytkownika_piszacego_post)


objaśnienie do zapytania : 1. niewiem czy [unread_posts`=`unread_posts`+',(id_posta)' to prawidłowe łączenie stringów w sql, jeśli nie to poprawcie. 2. `user_id`!=(id_uzytkownika_piszacego_post) - zaladam że user który właśnie wysłał post automatycznie go przeczytał.

korzystanie z takiej bazy nie przeczytach postów:
pobieranie wiersza, następnie rozdzielenie na tablicy przy pomocy
  1. <?php
  2. $unreaded_posts=explode(',', $row['unread_posts']);
  3. ?>


i dalej już chyba wiadomo

teraz po wejściu do każdego tematu, (zakładam że id postów są w tablicy $posts_id)

  1. <?php
  2. $unreaded_posts-=$posts_id;
  3. $unreaded_posts_string=implode(',', $unreaded_posts);
  4. ?>

-nie jestem pewny czy tego typu odejmowanie tablicy od tablicy jest prawidłowe

i zapytanie
  1. UPDATE `users` SET `unreaded_posts`='(tutaj zmienna $unreaded_posts_string)' WHERE user_id=(id zarejestrowanego usera)


--------------------
:)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 19:02