Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak pokazać wiadomości tylko raz?
Saki
post
Post #1





Grupa: Zarejestrowani
Postów: 240
Pomógł: 2
Dołączył: 5.12.2010
Skąd: Fulda

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


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.
Go to the top of the page
+Quote Post
Uriziel01
post
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


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. }


Ten post edytował Uriziel01 9.01.2012, 07:24:19
Go to the top of the page
+Quote Post
Saki
post
Post #3





Grupa: Zarejestrowani
Postów: 240
Pomógł: 2
Dołączył: 5.12.2010
Skąd: Fulda

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


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! (IMG:style_emoticons/default/smile.gif)
EDIT:
Mała modifikacja, dodałem -5 bo pokazywało ciągle ostatną wiadomość (IMG:style_emoticons/default/smile.gif)

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

Teraz jest perfekt (IMG:style_emoticons/default/smile.gif)
Dziękuje (IMG:style_emoticons/default/smile.gif)

Ten post edytował Saki 9.01.2012, 13:25:10
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 11.10.2025 - 04:40