Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Rekordy z bazy i ich odswieżanie
Forum PHP.pl > Forum > Przedszkole
artekp999
Napisałem skrypt czatu większość działa oprócz najważniejszej rzeczy. Znalazłem skrypt napisany Ajaxem który odswieża diva co ileś sekund w moim wypadku to 5 sec , więc między tymi divami dałem poniższy kod. Ale rekordy z bazy widać jakieś 0,5 sec (jak zaczyna działac skrypt odswieżania wtedy nie działa) . Na spróbę w lini 9 dałem aktualną sekundę i działa to prawidłowo, odświeża się co 5 sec. Więc błąd musi gdzieś tkwic w moim zapytaniu lub wyświetlaniu z bazy. Co mam zle, jaka jest przyczyna błędnego działania.

  1. <?php
  2. $czat = mysql_query("select * from czat WHERE `kategoria`='$kategoria' order by id desc limit 0,50");
  3. while($rekord = mysql_fetch_array($czat))
  4. {
  5. $nick = $rekord[2];
  6. $naz .= ''.$nick.''.$rekord[1].'</a>('.$rekord[3].') '.$rekord[5].'<br>';
  7. }
  8. echo "$naz";
  9. echo (date(s));
  10. ?>


pomoże ktoś questionmark.gif
gargamel
Pokaż ten skrypt AJAXowy do odświeżania
artekp999
Moim zdaniem to nie jest wina skryptu tylko zle coś pobieram z bazy . Testowałem kilka skryptów i z każdym było tak samo

  1. <head>
  2. <script language=javascript>
  3. // tworzymy zmienna
  4. var object = false;
  5.  
  6. // tworzymy obiekt XMLHttpRequest (dla IE jest troche inaczej, stad funkcja warunkowa)
  7. if (window.XMLHttpRequest) object = new XMLHttpRequest();
  8. else if (window.ActiveXObject) object = new ActiveXObject("Microsoft.XMLHTTP");
  9.  
  10. // ponizsza funkcja pobiera dane ze wskazanego zrodla (pliku lub skryptu php) do wskazanego
  11. // DIVa poprzez obiekt XMLHttpRequest
  12. function getData(dataSource, divID)
  13. {
  14. // kontynuuje wylacznie gdy obiekt nie jest zajety
  15. if (object.readyState==4 || object.readyState==0)
  16. {
  17. // tworzy zmienna odpowiadajaca konkretnemu obiektowi na stronie
  18. var obj = document.getElementById(divID);
  19.  
  20. // czyta z pliku lub wykonuje skrypt
  21. object.open("GET", dataSource);
  22.  
  23. // definiuje metode obslugi odpowiedzi serwera
  24. object.onreadystatechange = function()
  25. {
  26. // kontynuuje jesli transmisja zostala zakonczona powodzeniem
  27. if (object.readyState == 4 && object.status == 200)
  28. obj.innerHTML= object.responseText;
  29. }
  30. // wysyla zadanie do serwera
  31. object.send(null);
  32. }
  33. }
  34.  
  35. // w ponizszej funkcji wywolujemy funkcje getData z odpowiednimi parametrami
  36. // oraz wywolujemy ja sama rekurencyjnie po co okreslony czas (w naszym wypadku 1000 ms)
  37. function odswiezaj()
  38. {
  39. getData('wyswietlanie.php','mojDIVIK');
  40. setTimeout("odswiezaj()", 5000);
  41. }
  42.  
  43. </script>
  44. </head>
  45. <body>
  46. </php
  47. echo '<div id="mojDIVIK">';
  48. include ("wyswietlanie.php");
  49. echo '</div>';
  50. ?>
  51. <script language=javascript>
  52. odswiezaj();
  53. </script>
  54. ?>
nospor
Przecież w wyswietlanie.php nigdzie nie łączysz się z bazą więc niby jakim cudem mysql_query() ma ci działać?
To, że ci działa za pierwszy razem to tylko i wyłącznie dlatego, że includujesz to w głównym skrypcie. Ale później jak leci AJAX to wyswietlanie.php jest już samodzielnym skryptem i wymaga normalnego połączenia z bazą.
artekp999
dalej to samo sad.gif

demo
http://www.artekp999.cba.pl/test/testy/czat.php?pokoj=1

login artek
haslo 12345
nospor
No ale pokaż kod po zmianach.... skąd ja mam wiedzieć co ty tam nazmieniałeś.
artekp999
Dobra już znalazłem błąd
błąd był ze zmienną $kategoria

Temat do zamknięcia
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.