![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 240 Pomógł: 2 Dołączył: 5.12.2010 Skąd: Fulda Ostrzeżenie: (0%) ![]() ![]() |
Witam, chciałbym zrobić na jednej stronie, aby wiadomości pisane przez użytkowników były na tej stronie wyświetlane tylko raz, jeżeli użytkownik odświeży stronę już nie zobaczy tej wiadomości tylko nowe, a jak szybko odświeża i nikt nic nie napisze to strona pozostaje pusta aż ktoś coś nowego napiszę.
Przykład: user dodaje nową wiadomość (jest zapisywana w mysql) -> user wchodzi na stronę i widzi nowe wiadomości pobrane z mysql -> jeżeli nikt nic nowego nie napisał i odświeża stronę to ma pustą stronę. To ma działać dla każdej osoby, jeżeli jedna osoba z chin odświeżyła stronę i nie ma nowych wiadomości to ma pokazywać pustą stronę, ale jeżeli ktoś z niemiec odświeża stronę na której długo nie był to dostaje wszystkie nieprzeczytane wiadomości. Jak coś takiego zrobić? Do mysql nie wolno nic dopisywać, że przeczytana wiadomość została, bo wiadomości może być kilka miliardów. Myślałem o session, w sessji będzie się zapisywać ostatni wyświetlony od wiadomości, co w na to? Może macie jakiś lepszy pomysł? ![]() Jak wykonać polecenie: Wyświetl wszystkie wiadomości z mysql które mają większe ID od $_SESSION['lastReadId']? Chyba mam, dobrze, czy da się jeszcze lepiej? Chodzi mi aby ten skrypt działał perfekcyjnie.
Ten post edytował Saki 17.08.2012, 06:21:37 -------------------- Moje serwisy: services.itunix.eu | spytajsie.com
Server: Debian; Desktop: Mac Mini 10.8.1, ArchLinux XFCE |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Dodaj kolumne np. read(tinyint), która będzie mówiła czy wiadomość została przeczytana czy nie. Gdy ktoś doda wiadomość ustaw read na 0 a po jej wyświetleniu update z 0 na 1. Oczywiście wyświetlasz tylko te wiadomości, które mają read = 0
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 240 Pomógł: 2 Dołączył: 5.12.2010 Skąd: Fulda Ostrzeżenie: (0%) ![]() ![]() |
Dodaj kolumne np. read(tinyint), która będzie mówiła czy wiadomość została przeczytana czy nie. Gdy ktoś doda wiadomość ustaw read na 0 a po jej wyświetleniu update z 0 na 1. Oczywiście wyświetlasz tylko te wiadomości, które mają read = 0 Napisałem przecież że to nie może być! Jak mam to zrobić proszę bardzo jak jest tysiące użytkowników a jedna wiadomość?! Bo jeżeli zrobię tak jak ty piszesz to pokaże wiadomość pierwszemu użytkownikowi który wejdzie na stronę a nie reszcie, co to ma być? ![]() "Do mysql nie wolno nic dopisywać, że przeczytana wiadomość została, bo wiadomości może być kilka miliardów." Ten post edytował Saki 17.08.2012, 13:38:10 -------------------- Moje serwisy: services.itunix.eu | spytajsie.com
Server: Debian; Desktop: Mac Mini 10.8.1, ArchLinux XFCE |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 1 Dołączył: 10.07.2012 Ostrzeżenie: (0%) ![]() ![]() |
przecież jak dodasz to pole to utworzy się ono w każdej wiadomości...
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 14 Dołączył: 2.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ja bym powiedział bardziej byś stworzył kolumnę idmessage w tabeli użytkowników i gdy odczytujesz wiadomości sprawdzasz jakie jest to id i wypisujesz tylko wiadomości z większym id z tabeli z wiadomościami, a idmessage update-ujesz do największej wartości z id w tabeli z wiadomościami.
Ten post edytował radziopoke 17.08.2012, 13:51:48 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 1.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zrób tak że przy wiadomości utwórz jakieś pole (może być read) z pierwotną wartością 0. Gdy jakiś użytkownik przeczyta tą wiadomość dopisuj tam jego id użytkownika po przecinku.
A potem tylko zrobić dobrą filtracje po tworzącej się liście w polu read i będzie śmigać. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 03:04 |