Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript][AJAX] Wyświetlanie rekordów z bazy mysql.
Forum PHP.pl > Forum > Przedszkole
miras
Witam, mam następujący problem a mianowicie mam sobie pewną tabelę w bazie danych w niej trzymam dane np. samochod, kolor, numery i problem polega na tym, że ja muszę wyświetlać te dane z bazy 'dynamicznie' tzn, że podczas zalogowania sesji użytkownika jak ktoś doda jakiś rekord do bazy to on ma mi się automatycznie bez odświeżania strony wyświetlić, coś jak wyświetlanie danych na stronie głównej: i jeżeli ktoś doda jakiś nowy rekord to na głównej automatycznie bez odświeżania strony się on pojawi, poproszę o jakieś wskazówki, bo nie znam ajaxa na tyle, żeby napisać coś takiego, kompletnie nie wiem jak się za to zabrać.

Dzięki z góry!
csharp
krok po kroku...

http://woork.blogspot.com/2007/10/insert-r...using-ajax.html
miras
nie chodziło mi o takie dodawanie rekordów do bazy, tylko o wyświetlanie tych rekordów dynamicznie na głównej, żeby po każdym dodaniu rekordu na głównej stronie ten rekord się wyświetlił bez przeładowywania strony..
Niktoś
Zobacz tutaj:
http://www.w3schools.com/php/php_ajax_database.asp
miras
Już bliżej, ale nadal nie rozumiecie, o co mi chodzi, a mi chodzi o to, że mam sobie takie wyświetlanie danych z bazy:

http://aron.zxy.me/kosz/test/getuser.php

tu jest kod:
  1.  
  2. <?php
  3.  
  4. include("config.php");
  5.  
  6. $wynik = mysql_query("SELECT * FROM uzytkownicy")
  7. or die('Błąd zapytania');
  8.  
  9. if(mysql_num_rows($wynik) > 0) {
  10.  
  11.  
  12.  
  13. echo "<table border='1'>
  14. <tr>
  15. <th>login</th>
  16. <th>haslo</th>
  17. <th>mail</th>
  18. <th>imie</th>
  19. <th>nazwisko</th>
  20. </tr>";
  21.  
  22. while($row = mysql_fetch_assoc($wynik))
  23. {
  24. echo "<tr>";
  25. echo "<td>" . $row['login'] . "</td>";
  26. echo "<td>" . $row['haslo'] . "</td>";
  27. echo "<td>" . $row['mail'] . "</td>";
  28. echo "<td>" . $row['imie'] . "</td>";
  29. echo "<td>" . $row['nazwisko'] . "</td>";
  30. echo "</tr>";
  31. }
  32. echo "</table>";
  33. }
  34. ?>


a ja potrzebuję zrobić coś dokładnie takiego samego, tylko, że jeżeli np. dodam jakiś nowy rekord do bazy to on automatycznie się wyświetli('doda do tej tabelki') bez przeładowywania strony, rozumiecie ?

mam coś takiego:


plik wybor.js

  1. var xmlhttp;
  2.  
  3. function showPart(str)
  4. {
  5. xmlhttp=GetXmlHttpObject();
  6. var url="getuser.php";
  7. url=url+"?part="+str;
  8. url=url+"&sid="+Math.random();
  9. xmlhttp.onreadystatechange=stateChanged;
  10. xmlhttp.open("GET",url,true);
  11. xmlhttp.send(null);
  12. }
  13.  
  14. function stateChanged()
  15. {
  16. if (xmlhttp.readyState==4)
  17. {
  18. document.getElementById("informacja").innerHTML=xmlhttp.responseText;
  19. }
  20. }
  21.  
  22. function GetXmlHttpObject()
  23. {
  24. if (window.XMLHttpRequest)
  25. {
  26. return new XMLHttpRequest();
  27. }
  28. return null;
  29. }


plik index.php

  1. <head>
  2. <script type="text/javascript" src="wybor.js"></script>
  3. </head>
  4.  
  5. <strong>Wybierz część</strong>
  6. <select name="rekord" onchange="showPart(this.value)">
  7. <option value="1">Lusterko</option>
  8. <option value="2">Opony letnie</option>
  9. <option value="3">Katalizator</option>
  10. </form>
  11. <br />
  12. <div id="informacja">Opis wybranej części:</div>
  13.  
  14. </body>
  15. </html>


i plik getuser.php

  1.  
  2.  
  3.  
  4.  
  5. <?php
  6.  
  7. include("config.php");
  8.  
  9. $wynik = mysql_query("SELECT * FROM uzytkownicy")
  10. or die('Błąd zapytania');
  11.  
  12. if(mysql_num_rows($wynik) > 0) {
  13.  
  14.  
  15.  
  16. echo "<table border='1'>
  17. <tr>
  18. <th>login</th>
  19. <th>haslo</th>
  20. <th>mail</th>
  21. <th>imie</th>
  22. <th>nazwisko</th>
  23. </tr>";
  24.  
  25. while($row = mysql_fetch_assoc($wynik))
  26. {
  27. echo "<tr>";
  28. echo "<td>" . $row['login'] . "</td>";
  29. echo "<td>" . $row['haslo'] . "</td>";
  30. echo "<td>" . $row['mail'] . "</td>";
  31. echo "<td>" . $row['imie'] . "</td>";
  32. echo "<td>" . $row['nazwisko'] . "</td>";
  33. echo "</tr>";
  34. }
  35. echo "</table>";
  36. }
  37. ?>



i jest prawie ok, z tym, że nowo dodany rekord się nie pokaże sam automatycznie tylko dopiero wtedy jak zmienię którąś opcję select.. może ktoś by to umiał przerobic?
Korab
Tu wchodzi do gry funkcja setInterval().
miras
niestety niewiele mi to mówi, z tego, co szukałem - też nic sensownego nie znalazłem, wiem, że jest to 'błaganie o gotowca', ale jakbyś mógł mi to zastosować w powyższym kodzie to byłbym niezmiernie wdzięczny..
Korab
Druga strona w Google:
http://javascript.about.com/od/reference/g/ssetinterval.htm
Oto co tam znalazłem (po małej przeróbce):

[JAVASCRIPT] pobierz, plaintext
  1. var coo = document.getElementsByName("rekord");
  2. var co = co[0];
  3. intervalID = window.setInterval(showPart(co.value), 500);
[JAVASCRIPT] pobierz, plaintext


To wsadź sobie w HEAD.
miras
Wrzuciłem jak mówiłeś w head plik index.php wygląda tak:

  1. <head>
  2.  
  3. <script type="text/javascript">
  4. var coo = document.getElementsByName("rekord");
  5. var co = co[0];
  6. intervalID = window.setInterval(showPart(co.value), 5);
  7. <script type="text/javascript" src="wybor.js"></script>
  8.  
  9.  
  10.  
  11. </head>
  12.  
  13. <strong>Wybierz część</strong>
  14. <select name="rekord" onchange="showPart(this.value)">
  15. <option value="1">Lusterko</option>
  16. <option value="2">Opony letnie</option>
  17. <option value="3">Katalizator</option>
  18. </form>
  19. <br />
  20. <div id="informacja">Opis wybranej części:</div>
  21.  
  22. </body>
  23. </html>


ale zamierzonego efektu nie osiągnąłem..
Korab
Kolejność wykonywania skryptów ma znaczenie. Zamień je miejscami.
miras
Teraz mam tak i nadal brak efektu...

  1. <head>
  2. <script type="text/javascript" src="wybor.js"></script>
  3. <script type="text/javascript">
  4. var coo = document.getElementsByName("rekord");
  5. var co = co[0];
  6. intervalID = window.setInterval(showPart(co.value), 500);
  7. </head>
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.