Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Java][AJAX]dodawanie rekordu do bazy ajaxem - problem
Forum PHP.pl > Forum > Przedszkole
Krismen
Witam, próbuję dodać rekordy do bazy bez przeładowania strony takim oto kodem:

  1. <body>
  2.  
  3. <html>
  4. <form action="" method="GET" id="formularzyk">
  5. <input type="text" name="pole" id="pole">
  6. <input type="submit" id="wyslij" name="wyslij" value="wyslij">
  7. </form>
  8.  
  9. <div id="tresc">
  10.  
  11. </div>
  12.  
  13. </body>
  14.  
  15.  
  16. <script type="text/javascript" src="../../js/jquery.js"> </script>
  17. <script type="text/javascript">
  18.  
  19. $(document).ready(function(){
  20.  
  21. $('#tresc').load('laduj.php');
  22.  
  23. })
  24.  
  25. $('#formularzyk').submit(function(){
  26.  
  27. var pole=$('#pole').val();
  28.  
  29. var data=
  30. {
  31. pole: pole
  32. }
  33.  
  34. $.get('laduj.php',data,callback)
  35.  
  36. return false;
  37.  
  38.  
  39.  
  40. function callback(data,status)
  41. {
  42. var newHTML;
  43.  
  44. if(status=='success')
  45. {
  46. newHTML=data;
  47. }
  48.  
  49. else
  50. {
  51. newHTML = "<h2> Błąd </h2>";
  52. }
  53.  
  54. $('#tresc').html(newHTML);
  55. }
  56. })
  57.  
  58.  
  59. </script>
  60.  


A więc po wejściu na stronę mam formularz i funkcją load ładuję rekordy które mam już w bazie. W pole wpisuję nową wartość, którą chce dodać do bazy, np. wartość1. Podglądam bazę i widzę, że rekord jest dodany czyli do tego momentu wszystko jest OK. Ale na stronie nowego wpisu nie ma, pojawia się dopiero kiedy dodam kolejny wpis albo kiedy odświeżę stronę. Chciałbym żeby pojawiał się od razu po kliknięciu submita. Niem wiem gdzie zrobiłem błąd, może coś nie tak z funkcją zwrotną ? Proszę o pomoc, ajaxa studiuję od niedawna. Na koniec jeszcze kod php ładowany do strony, choć myślę że w nim wszystko jest OK

  1. <?php
  2. $komputer='localhost';
  3. $uzytkownik='root';
  4. $haslo="krasnal";
  5. $baza="miasta";
  6.  
  7. $polaczenie=mysqli_connect($komputer, $uzytkownik, $haslo, $baza);
  8.  
  9. $pytanie="select * from wojewodztwa ORDER BY id_woj DESC";
  10.  
  11. $rezultaty=mysqli_query($polaczenie,$pytanie);
  12.  
  13. $ilosc_rzedow=mysqli_num_rows($rezultaty);
  14.  
  15.  
  16. for ($i=0; $i<$ilosc_rzedow; $i++)
  17. {
  18. $wiersz=mysqli_fetch_array($rezultaty);
  19. $kolumna1=$wiersz[0];
  20. $kolumna2=$wiersz[1];
  21.  
  22. $tablica[$kolumna1]=($kolumna2);
  23. }
  24.  
  25. foreach ($tablica as $kolumna1 => $kolumna2)
  26. {
  27. echo $kolumna1 .">" .$kolumna2 ."<br />";
  28. }
  29.  
  30. $pole=$_GET['pole'];
  31.  
  32. if(isset($_GET['pole']))
  33. {
  34. $polaczenie=mysqli_connect($komputer, $uzytkownik, $haslo, $baza);
  35. $pytanie="insert into wojewodztwa values('','$pole')";
  36. $rezultaty=mysqli_query($polaczenie,$pytanie);
  37. }
  38. ?>
  39.  
peter13135
Odpowiedź jest bardzo prosta.
Przeanalizujmy jak działa skrypt gdy dodajesz nowe dane :
1. Łączysz się z bazą
2. Pobierasz dane i następnie je wyświetlasz
3. Dodajesz nowe dane

Problem polega na tym, że dane które pobierasz (pkt 2) nie zawierają nowego wpisu, bo ten jest dodawany dopiero w punkcie 3.

Druga sprawa, nie musisz drugi raz się łączyć, wystaczy że raz wywołasz funkcję mysql_connect
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.