Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][AJAX][PHP]Chat, odświeżanie nie wywołuje się.
jarek998
post 4.11.2015, 23:25:03
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 31.01.2014

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


Cześć wszystkim, mam problem przy tworzeniu chatu.

chat_process - skrypt ten powinien wyciągać z bazy, napisaną wiadomość.
  1.  
  2. $sprawdz = $pdo->prepare("SELECT * FROM czat WHERE pokoj=:room ORDER BY id DESC LIMIT 50");
  3.  
  4. $sprawdz->bindValue(":room", $_POST['room'], PDO::PARAM_INT);
  5.  
  6. $sprawdz->execute();
  7.  
  8.  
  9. if(isset($_POST['function'])) {
  10.  
  11.  
  12. while($txt = $sprawdz->fetch()){
  13.  
  14. $text['tresc'] = $text['tresc']."<tr> <td class='user'><a href=gracze.php?id=".$txt['gracz_id'].">".$txt['gracz']."</a> (".$txt['data'].")</td><td class='mess'>".bbcode($txt['txt'])."</td></tr>";
  15.  
  16. }$return['text'] = $text;
  17.  
  18. echo json_encode($return);
  19.  
  20.  
  21. }
  22.  


czat.php - Ten fragment jest potrzebny aby to funkcjonowało
  1. <script>
  2. var room = '<?php echo $_GET['id']; ?>'
  3. function refresh(){
  4. $.ajax({
  5. type:"POST",
  6. url:"chat_process.php",
  7. data:{
  8. 'function':'refresh',
  9. 'room':room,
  10. },
  11. dataType:"json",
  12. success:function(data){
  13. $('#posts').prepend(data.text['tresc']);
  14.  
  15. },
  16. });
  17. }
  18. refresh();
  19. setInterval('refresh()', 5000);
  20. </script>
  21.  


Nie mogę znaleźć rozwiązania, oczywiście połączenie z bazą jest.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
shx420
post 5.11.2015, 00:21:55
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 2
Dołączył: 15.02.2015

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


Zamiast

  1. setInterval('refresh()', 5000);


Wpisz

  1. setInterval(refresh, 5000);


I powinno być ok.
Go to the top of the page
+Quote Post
olszam
post 5.11.2015, 00:29:31
Post #3





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


Kod
setInterval('refresh()', 5000);
tych kresek nie powinieneś wywalić? sry zapomniałem ich nazwy sad.gif
Go to the top of the page
+Quote Post
nospor
post 5.11.2015, 09:52:53
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A co wyscie sie tych apostrofow uczepili? Tam wszystko jest ok.
@shx420 i nie, nie zasluzyles na pomogl bo obie formy sa poprawne i twoj post nie przyczynil sie w zaden sposob do rozwiazania problemu


@jarek998 a ty moglbys sie wysilic troche i napisac w czym dokladnie jest problem... Patrzyles w ogole w konsole FireBug co zwraca twoj ajax?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jarek998
post 5.11.2015, 10:53:58
Post #5





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 31.01.2014

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


Tak patrzałem, zwraca puste pole HTML, myślałem że coś z pętlą jest nie tak, bo gdy wpiszę puste dajmy "Tekst" to co 5 sec będzie się pojawiać tekst.

W Edit jest wszystko dobrze, room:1 jeśli jestem na czat.php?id=1 itd.

w JSON jest wpisane text null

Html : {"text":null}


Cytat(shx420 @ 5.11.2015, 00:21:55 ) *
Zamiast

  1. setInterval('refresh()', 5000);


Wpisz

  1. setInterval(refresh, 5000);


I powinno być ok.


W tedy funkcja nie wywołuje się.

Ten post edytował jarek998 5.11.2015, 10:52:25
Go to the top of the page
+Quote Post
MeGusta
post 5.11.2015, 14:41:43
Post #6





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Czasem nie powinno być tak:

  1.  
  2. $sprawdz = $pdo->prepare("SELECT * FROM czat WHERE pokoj=:room ORDER BY id DESC LIMIT 50");
  3.  
  4. $sprawdz->bindValue(":room", $_POST['room'], PDO::PARAM_INT);
  5.  
  6. $sprawdz->execute();
  7.  
  8.  
  9. if(isset($_POST['function'])) {
  10.  
  11.  
  12. while($txt = $sprawdz->fetch()){
  13.  
  14. $text['tresc'] = $text['tresc']."<tr> <td class='user'><a href=gracze.php?id=".$txt['gracz_id'].">".$txt['gracz']."</a> (".$txt['data'].")</td><td class='mess'>".bbcode($txt['txt'])."</td></tr>";
  15.  
  16. }
  17.  
  18. $return = $text['tresc'];
  19.  
  20. echo json_encode($return);
  21.  
  22.  
  23. }
  24.  


Oraz musisz ajaxem wysłać dane do zmiennej z javascript w ten sposób:

  1. var room;
  2. $.ajax({
  3. type: 'POST',
  4. url: 'plik.php',
  5. success: function(data) {
  6. room = JSON.parse(data);
  7. },
  8. });
  9.  
  10. function refresh(){
  11. $.ajax({
  12. type:"POST",
  13. url:"chat_process.php",
  14. data:{
  15. 'function':'refresh',
  16. 'room':room,
  17. },
  18. dataType:"json",
  19. success:function(data){
  20. $('#posts').prepend(data.text['tresc']);
  21.  
  22. },
  23. });
  24. }
  25. refresh();
  26. setInterval(refresh();, 5000);


Ten post edytował MeGusta 5.11.2015, 15:07:38
Go to the top of the page
+Quote Post
olszam
post 5.11.2015, 16:23:27
Post #7





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


Cytat
Tak patrzałem, zwraca puste pole HTML, myślałem że coś z pętlą jest nie tak, bo gdy wpiszę puste dajmy "Tekst" to co 5 sec będzie się pojawiać tekst.


a gdzieś kod sprawdza czy po 5 sekundach nie dodaje tych samych danych z mysqla? Albo czyścisz boxa i dodajesz jeszcze raz wszytko co zwróci ci zapytanie albo porównujesz z tym co jest wpisane i dodajesz to co nie zostało wpisane w odpowiedniej kolejności a powyżej 50 wpisów powinny być kasowane.
Go to the top of the page
+Quote Post
Comandeer
post 5.11.2015, 16:58:26
Post #8





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


Cytat
A co wyscie sie tych apostrofow uczepili? Tam wszystko jest ok.

Kinda sorta. Owszem, jest to dopuszczalne, ale wysoce niezalecane: http://bonsaiden.github.io/JavaScript-Gard...rzystanie-eval-

Co do tematu: jesteś pewien, że baza poprawnie wykonuje zapytanie? Bo wygląda jakby zwracała pusty wynik


--------------------
Go to the top of the page
+Quote Post
nospor
post 5.11.2015, 16:59:34
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Kinda sorta. Owszem, jest to dopuszczalne, ale wysoce niezalecane:
Wiem, ale oni tutaj uzyli tego w kontekscie, ze niby przez to nie dziala, co oczywiscie jest nieprawda.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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 - 12:49