Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak pokazać wiadomości tylko raz?
Forum PHP.pl > Forum > PHP
Saki
Witam, robię shoutboxa w którym JS pobiera dane z pliku php i doczepia je do tych które są już pobrane.
I mam tutaj mały problem.
Jak zrobić aby pokazane wiadomości z pliku ajaxShoutbox.php już nie wyświetlały się więcej?
Bo teraz ciągle wszystkie wiadomości pobiera z ajaxShoutbox,php i dokleja do index.php ciągle.

Więc jak ktoś coś nowego napisze, to w ajaxShoutbox.php ma się tylko raz pokazać.
Jak to zrobić?
Myslałem już o sesji:

  1. if ($_GET['show'] == 1) {
  2.  
  3. foreach ($cursor as $obj) {
  4. $_SESSION['views'] = $obj["data"];
  5. $sesja = $_SESSION['views'];
  6.  
  7. //if ($sesja == time())
  8. //{
  9. echo date('H:i:s' ,$obj["data"]) . ': <b>' . $obj["nick"] . '</b> ' . $obj["shout"] . "<br />";
  10. //}
  11.  
  12. }
  13.  
  14. }


w $sesja jest time() wiadomości, i jeżeli time będzie mniejszy od naszego czasu to nie wyświetlało by wiadomości.
Ale nie działa. Proszę o pomoc.
Uriziel01
Dobrze myślałeś. Najlepiej zrealizować to właśnie na jakimś timestampie lub też ewentualnie przydzielić każdej wiadomości unikalne ID po którym można je identyfikować.
EDIT:
Ale chwilkę, co to jest za kod ? Zmienna sesyjna wcale nie pochodzi tutaj z sesji a jest wartość jest wpisywana do niej przed porównaniem ? W dodatku nie możesz porównywać do 'time()' tylko musisz dla kazdej wiadomości porównywać jej własny timestamp do zapisanego do sesji. A do sesji powinien trafiać najwyższy z dostępnych.
  1. foreach ($cursor as $obj) {
  2.  
  3. if (!isset($_SESSION['shoutbox_time']) OR $_SESSION['shoutbox_time'] <= $obj["data"])
  4. {
  5. $_SESSION['shoutbox_time'] = $obj['data'];
  6. echo date('H:i:s' ,$obj["data"]) . ': <b>' . $obj["nick"] . '</b> ' . $obj["shout"] . "<br />";
  7. }
  8.  
  9. }
Saki
Cytat(Uriziel01 @ 9.01.2012, 07:14:39 ) *
Dobrze myślałeś. Najlepiej zrealizować to właśnie na jakimś timestampie lub też ewentualnie przydzielić każdej wiadomości unikalne ID po którym można je identyfikować.
EDIT:
Ale chwilkę, co to jest za kod ? Zmienna sesyjna wcale nie pochodzi tutaj z sesji a jest wartość jest wpisywana do niej przed porównaniem ? W dodatku nie możesz porównywać do 'time()' tylko musisz dla kazdej wiadomości porównywać jej własny timestamp do zapisanego do sesji. A do sesji powinien trafiać najwyższy z dostępnych.
  1. foreach ($cursor as $obj) {
  2.  
  3. if (!isset($_SESSION['shoutbox_time']) OR $_SESSION['shoutbox_time'] <= $obj["data"])
  4. {
  5. $_SESSION['shoutbox_time'] = $obj['data'];
  6. echo date('H:i:s' ,$obj["data"]) . ': <b>' . $obj["nick"] . '</b> ' . $obj["shout"] . "<br />";
  7. }
  8.  
  9. }


Dzięki! smile.gif
EDIT:
Mała modifikacja, dodałem -5 bo pokazywało ciągle ostatną wiadomość smile.gif

  1. if (!isset($_SESSION['shoutbox_time']) OR $_SESSION['shoutbox_time'] <= $obj["data"]-5)

Teraz jest perfekt smile.gif
Dziękuje smile.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.