Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][MySQL][PHP] prosty formularz ajax
Forum PHP.pl > Forum > Przedszkole
dentopolis
chciałbym zapisywać ajaxem bardzo prosty formularz:
klient|dataspotkania

np:
Adam|2017-05-14
Karol|2017-06-02

ze stackoverflow mam działający kod tzn pojawia się zielony komunikat że dane zostały przesłane...ale ten drugi plik nie zapisuje i nie odczytuje mysql.

jak w tym drugim pliku zapisującym, pobrać dane (GET? POST?) i utworzyć zapytanie do bazy?

mam ten kod:stackoverflow
bostaf
Do process.php dane POST i GET przekazuje się jako parametry $.(ajax), w tym przykładzie konkretnie tutaj:
[JAVASCRIPT] pobierz, plaintext
  1. data : postForm,
  2. dataType : 'json',
[JAVASCRIPT] pobierz, plaintext

gdzie postForm jest ustawiony wcześniej jako tablica json:
[JAVASCRIPT] pobierz, plaintext
  1. var postForm = { //Fetch form data
  2. 'name' : $('input[name=name]').val() //Store name fields value
  3. };
[JAVASCRIPT] pobierz, plaintext

gdzie "name" jest wartością pobraną z inputa "name" z formularza w form.php.
Jeśli masz więcej danych, to dodajesz je do tej tablicy:
[JAVASCRIPT] pobierz, plaintext
  1. var postForm = { //Fetch form data
  2. 'name' : $('input[name=name]').val(),
  3. 'imie': "Adam", // "Adam" pobierasz analogicznie jak wyżej, z formularza albo jakiegokolwiek innego elementu dokumentu
  4. 'data': "2017-05-14"
  5. };
[JAVASCRIPT] pobierz, plaintext

Cały ten postForm będzie dostępny w process.php tak jakby był przesłany POSTEM, np.: $_POST['imie'].

I teraz to co pobrałeś z głównego dokumentu i przekazałeś do process.php przez ajax, musisz w process.php obrobić tak jak to się normalnie w innym miejscu obrabia - zdefiniować SQL itd:
  1. $sql = "update terminarz set ...";
  2. $conn->query($sql);
dentopolis
dzięki za pomoc, ale jeszcze coś nie działa: obecnie tak to wygląda:

technik.php
  1. <!DOCTYPE html>
  2. <html lang="pl">
  3. <head>
  4. <title>technik</title>
  5. <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
  6.  
  7. <script>
  8. $(document).ready(function() {
  9. $('form').submit(function(event) { //Trigger on form submit
  10. $('#name + .throw_error').empty(); //Clear the messages first
  11. $('#success').empty();
  12.  
  13. var technik = {
  14. 'pacjent1' : $('input[name=pacjent1]').val(),
  15. 'technik1': "x",
  16. 'gabinet1': "x",
  17. 'umowiony1': "x"
  18. };
  19.  
  20. $.ajax({
  21. type : 'GET',
  22. url : 'technikajax.php',
  23. data : technik,
  24. dataType : 'json',
  25. success : function(data) {
  26.  
  27. if (!data.success) {
  28. if (data.errors.name) { //Returned if any error from process.php
  29. $('.throw_error').fadeIn(1000).html(data.errors.name); //Throw relevant error
  30. }
  31. } else {
  32. $('#success').fadeIn(1000).append('<p>' + data.posted + '</p>'); //If successful, than throw a success message
  33. }
  34. }
  35. });
  36. event.preventDefault(); //Prevent the default submit
  37. });
  38. });
  39. </script>
  40. </head>
  41.  
  42. <body>
  43. <form method="GET" name="technik">
  44. <table border="1" width="50%">
  45. <thead>
  46. <tr>
  47. <td align="center">pacjent</td>
  48. <td align="center">technik</td>
  49. <td align="center">gabinet</td>
  50. <td align="center">umówiony</td>
  51. </tr>
  52. </thead>
  53. <tbody>
  54. <tr>
  55. <td align="center"><input type="text" name='pacjent1' size='20' value='<?php $pacjent1 ?>'></td>
  56. <td align="center"><input type="text" name='technik1' size='1' value='<?php $technik1 ?>'></td>
  57. <td align="center"><input type="text" name='gabinet1' size='1' value='<?php $gabinet1 ?>'></td>
  58. <td align="center"><input type="text" name='umowiony1' size='1' value='<?php $umowiony1 ?>'></td>
  59. </tr>
  60.  
  61. <tr>
  62. <td align="center"><input type="text" name='pacjent2' size='20' value='<?php $pacjent2 ?>'></td>
  63. <td align="center"><input type="text" name='technik2' size='1' value='<?php $technik2 ?>'></td>
  64. <td align="center"><input type="text" name='gabinet2' size='1' value='<?php $gabinet2 ?>'></td>
  65. <td align="center"><input type="text" name='umowiony2' size='1' value='<?php $umowiony2 ?>'></td>
  66. </tr>
  67. </tbody>
  68. </table>
  69.  
  70.  
  71. <input type="submit" value="Send" />
  72. </form>
  73. <div id="success"></div>
  74. </body>
  75. </html>





technikajax.php
  1. <?php
  2. $errors = array(); //To store errors
  3. $form_data = array(); //Pass back the data to `form.php`
  4.  
  5.  
  6. /* Validate the form on server side */
  7. if (empty($_POST['pacjent1'])) { //Name cannot be empty
  8. $errors['pacjent1'] = 'Name cannot be blank';
  9. }
  10.  
  11. if (!empty($errors)) { //If errors in validation
  12. $form_data['success'] = false;
  13. $form_data['errors'] = $errors;
  14. } else { //If not, process the form, and return true on success
  15. $form_data['success'] = true;
  16. $form_data['posted'] = 'Data Was Posted Successfully';
  17. }
  18.  
  19. //Return the data back to form.php
  20. echo json_encode($form_data);
  21.  
  22. <?php
  23. $pacjent1=$_GET['pacjent1'];
  24. $technik1=$_GET['technik1'];
  25. $gabinet1=$_GET['gabinet1'];
  26. $umowiony1=$_GET['umowiony1'];
  27.  
  28. echo $pacjent1;
  29. echo $technik1;
  30. echo $gabinet1;
  31. echo $umowiony1;
  32.  
  33.  
  34.  
  35. <?php
  36. function connect()
  37. {
  38. $dbhost = "localhost";
  39. $dbuser = "root";
  40. $dbpass = "";
  41. $dbname = "gabinet";
  42.  
  43. $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname) or die($conn->connect_error);
  44. return $conn;
  45. }
  46. $conn = connect();
  47. $query = "SELECT * FROM technik";
  48. $polacz = $conn->query($query);
  49. $conn->set_charset("utf8");
  50.  
  51. if ($polacz) {
  52.  
  53. $sqlsave = "UPDATE technik SET pacjent='$pacjent', technik='$technik1', gabinet='$gabinet1', umowiony='$umowiony1' WHERE id='1'";
  54.  
  55. $q = $conn->query($sqlsave);
  56. }
  57. else {
  58. echo "nic";
  59. }
  60. ?>
viking
if (empty($_POST['pacjent1']
Wysyłasz getem, sprawdzasz post. Wysyłaj jeszcze odpowiednie nagłówki w php dla typu json.
dentopolis
nie rozumiem. czyli w pliku technik.php wszystko ma być POST a w technikajax.php GET czyli:

  1. $pacjent1=$_GET['pacjent1'];
  2. $technik1=$_GET['technik1'];
  3. $gabinet1=$_GET['gabinet1'];
  4. $umowiony1=$_GET['umowiony1'];
  5.  
  6. echo $pacjent1;
  7. echo $technik1;
  8. echo $gabinet1;
  9. echo $umowiony1;


questionmark.gif?
viking
Ma być tak, jak to ustawiasz w type. Ty decydujesz czym wysyłasz.
dentopolis
czyli zamiast dataType ma być 'text'? 'html'?

co jeszcze jest źle?


technik.php
  1. <!DOCTYPE html>
  2. <html lang="pl">
  3. <head>
  4. <title>technik</title>
  5. <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
  6.  
  7. <script>
  8. $(document).ready(function() {
  9. $('form').submit(function(event) { //Trigger on form submit
  10. $('#name + .throw_error').empty(); //Clear the messages first
  11. $('#success').empty();
  12.  
  13. var technik = {
  14. 'pacjent1' : $('input[name=pacjent1]').val(),
  15. 'technik1': "x",
  16. 'gabinet1': "x",
  17. 'umowiony1': "x"
  18. };
  19.  
  20. $.ajax({
  21. type : 'GET',
  22. url : 'technikajax.php',
  23. data : technik,
  24. dataType : 'json',
  25. success : function(data) {
  26.  
  27. if (!data.success) {
  28. if (data.errors.name) { //Returned if any error from process.php
  29. $('.throw_error').fadeIn(1000).html(data.errors.name); //Throw relevant error
  30. }
  31. } else {
  32. $('#success').fadeIn(1000).append('<p>' + data.posted + '</p>'); //If successful, than throw a success message
  33. }
  34. }
  35. });
  36. event.preventDefault(); //Prevent the default submit
  37. });
  38. });
  39. </script>
  40. </head>
  41.  
  42. <body>
  43. <form method="GET" name="technik">
  44. <table border="1" width="50%">
  45. <thead>
  46. <tr>
  47. <td align="center">pacjent</td>
  48. <td align="center">technik</td>
  49. <td align="center">gabinet</td>
  50. <td align="center">umówiony</td>
  51. </tr>
  52. </thead>
  53. <tbody>
  54. <tr>
  55. <td align="center"><input type="text" name='pacjent1' size='20' value='<?php $pacjent1 ?>'></td>
  56. <td align="center"><input type="text" name='technik1' size='1' value='<?php $technik1 ?>'></td>
  57. <td align="center"><input type="text" name='gabinet1' size='1' value='<?php $gabinet1 ?>'></td>
  58. <td align="center"><input type="text" name='umowiony1' size='1' value='<?php $umowiony1 ?>'></td>
  59. </tr>
  60.  
  61. <tr>
  62. <td align="center"><input type="text" name='pacjent2' size='20' value='<?php $pacjent2 ?>'></td>
  63. <td align="center"><input type="text" name='technik2' size='1' value='<?php $technik2 ?>'></td>
  64. <td align="center"><input type="text" name='gabinet2' size='1' value='<?php $gabinet2 ?>'></td>
  65. <td align="center"><input type="text" name='umowiony2' size='1' value='<?php $umowiony2 ?>'></td>
  66. </tr>
  67. </tbody>
  68. </table>
  69.  
  70.  
  71. <input type="submit" value="Send" />
  72. </form>
  73. <div id="success"></div>
  74. </body>
  75. </html>



technikajax.php

  1. pobierz, plaintext
  2.  
  3. <?php
  4. $errors = array(); //To store errors
  5. $form_data = array(); //Pass back the data to `form.php`
  6.  
  7.  
  8. /* Validate the form on server side */
  9. if (empty($_POST['pacjent1'])) { //Name cannot be empty
  10. $errors['pacjent1'] = 'Name cannot be blank';
  11. }
  12.  
  13. if (!empty($errors)) { //If errors in validation
  14. $form_data['success'] = false;
  15. $form_data['errors'] = $errors;
  16. } else { //If not, process the form, and return true on success
  17. $form_data['success'] = true;
  18. $form_data['posted'] = 'Data Was Posted Successfully';
  19. }
  20.  
  21. //Return the data back to form.php
  22. echo json_encode($form_data);
  23.  
  24. <?php
  25. $pacjent1=$_GET['pacjent1'];
  26. $technik1=$_GET['technik1'];
  27. $gabinet1=$_GET['gabinet1'];
  28. $umowiony1=$_GET['umowiony1'];
  29.  
  30. echo $pacjent1;
  31. echo $technik1;
  32. echo $gabinet1;
  33. echo $umowiony1;
  34.  
  35.  
  36.  
  37. <?php
  38. function connect()
  39. {
  40. $dbhost = "localhost";
  41. $dbuser = "root";
  42. $dbpass = "";
  43. $dbname = "gabinet";
  44.  
  45. $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname) or die($conn->connect_error);
  46. return $conn;
  47. }
  48. $conn = connect();
  49. $query = "SELECT * FROM technik";
  50. $polacz = $conn->query($query);
  51. $conn->set_charset("utf8");
  52.  
  53. if ($polacz) {
  54.  
  55. $sqlsave = "UPDATE technik SET pacjent='$pacjent', technik='$technik1', gabinet='$gabinet1', umowiony='$umowiony1' WHERE id='1'";
  56.  
  57. $q = $conn->query($sqlsave);
  58. }
  59. else {
  60. echo "nic";
  61. }
  62. ?>
viking
Nie widzę żebyś poprawił cokolwiek o czym była mowa. Do tego zwracasz losowe dane - raz json, zaraz potem zwykłe echo. Nawet jak jest błąd to i tak lecisz bez sensu dalej.
dentopolis
sorry viking ale Twoje odpowiedzi są tak enigmatyczne że prowadziłyby mnie do czegokolwiek gdybym był informatykiem, a wtedy nie potrzebowałbym pomocy w dziale przedszkole. nie oczekuję że ktoś mi poprawi cały kod ale powie:
1)co mam ustawić w dataType
2)jak pobrać przesłane zmienne w drugim pliku (technikajax.php)
bo obecnie podobno robię to źle: $pacjent1=$_GET['pacjent1'];
viking
Ja ci piszę o type, a ty swoje dataType. Podałem ci linię z ifem, a ty sobie coś innego zmieniasz. Na brak czytania ze zrozumieniem nic nie poradzę niestety.

Jak to nie pomoże to nie wiem: https://prophp.pl/advice/show/17/jak_przygo...dan_xhr_json%3F

edit: dodałem kompletny przykład w artykule.
kayman
to jest źle i jest tego za dużo źle
- poczytaj jak przy pomocy js stworzyć url na zasadzie plik.php?zm1=x&zm2=y dla metody GET lub jak po stronie serwera rozkodować ten co jest bo tez można
- poczytaj o json, jak zwracać dane json przy pomocy php oraz jak dostać się do nich już z poziomu js
- używaj konsoli przeglądarki (F12) tam masz wszystko co jest wysyłane do serwera i z niego odbierane -> dane nagłówki url etc.
bostaf
Cytat(dentopolis @ 25.05.2017, 10:47:25 ) *
sorry viking ale Twoje odpowiedzi są tak enigmatyczne że prowadziłyby mnie do czegokolwiek gdybym był informatykiem, a wtedy nie potrzebowałbym pomocy w dziale przedszkole. nie oczekuję że ktoś mi poprawi cały kod ale powie:
1)co mam ustawić w dataType
2)jak pobrać przesłane zmienne w drugim pliku (technikajax.php)
bo obecnie podobno robię to źle: $pacjent1=$_GET['pacjent1'];


No racja, to w końcu przedszkole.
1. dataType nie zmieniaj. Zostaw tak jak w oryginalnym kodzie 'json'
2. Zmień $_GET na $_POST - dla wyjaśnienia, tam w parametrach $.ajax masz
[JAVASCRIPT] pobierz, plaintext
  1. type : 'POST', //Method type
[JAVASCRIPT] pobierz, plaintext
i to właśnie określa metodę, którą ajax będzie przesłany. Napisane jes "POST" czyli dane trzeba pobierać z tablicy $_POST a nie $_GET.

Zrób to co kayman napisał - F12 w przeglądarce otwiera okno "developer tools". Wybierz zakładkę "network" albo "sieć" i odśwież swoją stronę. Tam w zakładce "network" pokazują się wszystkie zasoby (pliki) z mnóstwem dodatkowych informacji ładowane z danego adresu. Za każdym razem jak wywołasz swojego ajaxa, na dole tamtej listy powinien pokazać się dodatkowy wiersz z nazwą pliku wołanego ajaxem - "technikajax.php". Jak go klikniesz, to po prawej stronie pojawi się okienko z dodatkowymi informacjami - nagłówkami, treścią itd. Wykorzystaj to, żeby sprawdzić co się dzieje. Na preview będziesz mógł zobaczyć błędy jakie wyskakują w "technikajax.php". Przeanalizuj i jak coś jest jeszcze nie jasne to pisz.
Ale pamiętaj, że mimo że to przedszkole, to my z fusów i zdawkowych "nie działa" też nie wywróżymy.
dentopolis
w konsoli widzę prawidłowo przesyłane wartości:


ale jak je teraz odczytać w php?

technik.php:
  1. <html lang="pl">
  2. <head>
  3. <title>technik</title>
  4. <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
  5.  
  6. <script>
  7. $(document).ready(function() {
  8. $('form').submit(function(event) { //Trigger on form submit
  9. $('#name + .throw_error').empty(); //Clear the messages first
  10. $('#success').empty();
  11.  
  12. var technik = {
  13. 'pacjent1' : $('input[name=pacjent1]').val(),
  14. 'technik1' : $('input[name=technik1]').val(),
  15. 'gabinet1' : $('input[name=gabinet1]').val(),
  16. 'umowiony1' : $('input[name=umowiony1]').val()
  17. };
  18.  
  19. $.ajax({
  20. type : 'POST',
  21. url : 'technikajax.php',
  22. data : technik,
  23. dataType : 'json',
  24. success : function(data) {
  25.  
  26. if (!data.success) {
  27. if (data.errors.name) { //Returned if any error from process.php
  28. $('.throw_error').fadeIn(1000).html(data.errors.name); //Throw relevant error
  29. }
  30. } else {
  31. $('#success').fadeIn(1000).append('<p>' + data.posted + '</p>'); //If successful, than throw a success message
  32. }
  33. }
  34. });
  35. event.preventDefault(); //Prevent the default submit
  36. });
  37. });
  38. </script>
  39.  
  40. </head>
  41. <?php
  42.  
  43.  
  44.  
  45. $pacjent1=$_POST['pacjent1'];
  46. $technik1=$_POST['technik1'];
  47. $gabinet1=$_POST['gabinet1'];
  48. $umowiony1=$_POST['umowiony1'];
  49.  
  50. echo $pacjent1;
  51. echo $technik1;
  52. echo $gabinet1;
  53. echo $umowiony1;
  54. ?>
  55. <body>
  56. <form method="POST" name="technik">
  57. <table border="1" width="50%">
  58. <thead>
  59. <tr>
  60. <td align="center">pacjent</td>
  61. <td align="center">technik</td>
  62. <td align="center">gabinet</td>
  63. <td align="center">umówiony</td>
  64. </tr>
  65. </thead>
  66. <tbody>
  67. <tr>
  68. <td align="center"><input type="text" name='pacjent1' size='20' value='<?php $pacjent1 ?>'></td>
  69. <td align="center"><input type="text" name='technik1' size='1' value='<?php $technik1 ?>'></td>
  70. <td align="center"><input type="text" name='gabinet1' size='1' value='<?php $gabinet1 ?>'></td>
  71. <td align="center"><input type="text" name='umowiony1' size='1' value='<?php $umowiony1 ?>'></td>
  72. </tr>
  73.  
  74. <tr>
  75. <td align="center"><input type="text" name='pacjent2' size='20' value='<?php $pacjent2 ?>'></td>
  76. <td align="center"><input type="text" name='technik2' size='1' value='<?php $technik2 ?>'></td>
  77. <td align="center"><input type="text" name='gabinet2' size='1' value='<?php $gabinet2 ?>'></td>
  78. <td align="center"><input type="text" name='umowiony2' size='1' value='<?php $umowiony2 ?>'></td>
  79. </tr>
  80. </tbody>
  81. </table>
  82.  
  83.  
  84. <input type="submit" value="Send" />
  85. </form>
  86. <div id="success"></div>
  87. </body>
  88. </html>


technikajax.php
  1. <?php
  2. $errors = array(); //To store errors
  3. $form_data = array(); //Pass back the data to `form.php`
  4.  
  5.  
  6. /* Validate the form on server side */
  7. if (empty($_POST['pacjent1'])) { //Name cannot be empty
  8. $errors['pacjent1'] = 'Name cannot be blank';
  9. }
  10.  
  11. if (!empty($errors)) { //If errors in validation
  12. $form_data['success'] = false;
  13. $form_data['errors'] = $errors;
  14. } else { //If not, process the form, and return true on success
  15. $form_data['success'] = true;
  16. $form_data['posted'] = 'Data Was Posted Successfully';
  17. }
  18.  
  19. //Return the data back to form.php
  20. echo json_encode($form_data);
  21.  
  22. <?php
  23. $pacjent1=$_POST['pacjent1'];
  24. $technik1=$_POST['technik1'];
  25. $gabinet1=$_POST['gabinet1'];
  26. $umowiony1=$_POST['umowiony1'];
  27.  
  28. echo $pacjent1;
  29. echo $technik1;
  30. echo $gabinet1;
  31. echo $umowiony1;
  32.  
  33.  
  34.  
  35. <?php
  36. function connect()
  37. {
  38. $dbhost = "localhost";
  39. $dbuser = "root";
  40. $dbpass = "";
  41. $dbname = "gabinet";
  42.  
  43. $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname) or die($conn->connect_error);
  44. return $conn;
  45. }
  46. $conn = connect();
  47. $query = "SELECT * FROM technik";
  48. $polacz = $conn->query($query);
  49. $conn->set_charset("utf8");
  50.  
  51. if ($polacz) {
  52.  
  53. $sqlsave = "UPDATE technik SET pacjent='$pacjent', technik='$technik1', gabinet='$gabinet1', umowiony='$umowiony1' WHERE id='1'";
  54.  
  55. $q = $conn->query($sqlsave);
  56. }
  57. else {
  58. echo "nic";
  59. }
  60. ?>
viking
Patrz. Oburzyles się na zwrócenie uwagi ale z podanym linkiem, gdzie masz kompletny przykład jak zrobić poprawnie wymianę danych, nie zapoznales się.
Cały czas tworzysz niepoprawny json. Doklejasz sobie losowo dane do odpowiedzi. Definiujesz funkcję connect której nigdy nie wywołujesz. Dałeś pomógł @bostaf ale i tak zignorowałeś co napisał. Nie sprawdzasz w ogóle odpowiedzi żądania w konsoli. Kod podatny na sql injection.
dentopolis
wykorzystałem przykład z podanego linku który kasował rekordy.ja chcę robić update i tak ustawiłem zapytanie. co w tym momencie jest błędne?

index.php
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
  6. <script>
  7. $(function() {
  8. $('#technik').on('submit', function(event) {
  9. event.preventDefault();
  10. $.ajax({
  11. url: "technikajax.php",
  12. method: "POST",
  13. data: $(this).serialize()
  14. })
  15. .done(function(data, textStatus, jqXHR) {
  16. $('#message').html(data.message);
  17. })
  18. .fail(function(jqXHR, textStatus, errorThrown) {
  19. $('#message').html(jqXHR.responseJSON.message);
  20. });
  21. });
  22. });
  23. </script>
  24. </head>
  25. <body>
  26. <div id="message"></div>
  27. <form action="POST" id="technik">
  28.  
  29. <input type="hidden" name="action" value="update">
  30.  
  31.  
  32.  
  33. <table border="1" width="50%">
  34. <thead>
  35. <tr>
  36. <td align="center">id</td>
  37. <td align="center">pacjent</td>
  38. <td align="center">technik</td>
  39. <td align="center">gabinet</td>
  40. <td align="center">umówiony</td>
  41. </tr>
  42. </thead>
  43. <tbody>
  44. <tr>
  45. <td align="center"><input type="text" name="id"></td>
  46. <td align="center"><input type="text" name='pacjent1' size='20' value='<?php $pacjent1 ?>'></td>
  47. <td align="center"><input type="text" name='technik1' size='1' value='<?php $technik1 ?>'></td>
  48. <td align="center"><input type="text" name='gabinet1' size='1' value='<?php $gabinet1 ?>'></td>
  49. <td align="center"><input type="text" name='umowiony1' size='1' value='<?php $umowiony1 ?>'></td>
  50. </tr>
  51.  
  52. <tr>
  53. <td align="center"><input type="text" name="id"></td>
  54. <td align="center"><input type="text" name='pacjent2' size='20' value='<?php $pacjent2 ?>'></td>
  55. <td align="center"><input type="text" name='technik2' size='1' value='<?php $technik2 ?>'></td>
  56. <td align="center"><input type="text" name='gabinet2' size='1' value='<?php $gabinet2 ?>'></td>
  57. <td align="center"><input type="text" name='umowiony2' size='1' value='<?php $umowiony2 ?>'></td>
  58. </tr>
  59. </tbody>
  60. </table>
  61.  
  62. <input type="submit">
  63. </form>
  64. </body>
  65. </html>
  66.  
  67.  
  68. technikajax.php
  69.  
  70. [php]
  71. <?php
  72. header("Content-Type: application/json;charset=utf-8");
  73.  
  74. $id = (int) $_POST['id'];
  75. $pacjent1 = (int) $_POST['pacjent1'];
  76. $technik1 = (int) $_POST['technik1'];
  77. $gabinet1 = (int) $_POST['gabinet1'];
  78. $umowiony1 = (int) $_POST['umowiony1'];
  79. $action = $_POST['action'] questionmark.gif null;
  80.  
  81. if ($action === 'update') {
  82. try {
  83. $dbh = new PDO('mysql:dbname=gabinet;host=127.0.0.1', 'root', '', [
  84. PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
  85. ]
  86. );
  87. $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  88. $sql = "UPDATE technik SET pacjent='$pacjent1', technik='$technik1', gabinet='$gabinet1', umowiony='$umowiony1' WHERE id = ?";
  89. $sth = $dbh->prepare($sql);
  90. $sth->execute([$id]);
  91. echo json_encode([
  92. 'message' => sprintf('zaktualizowano %d rekordów', $sth->rowCount())
  93. ]);
  94. } catch(PDOException $e) {
  95. http_response_code(500);
  96. echo json_encode([
  97. 'message' => 'Klasa PDO zwróciła wyjątek: ' . $e->getMessage()
  98. ]);
  99. }
  100. } else {
  101. http_response_code(500);
  102. echo json_encode([
  103. 'message' => 'Nieprawidłowa akcja'
  104. ]);
  105. }

[/php]
viking
Rzutujesz wszystkie dane będące stringami na int. Nie bindujesz danych do zapytania. Dlaczego nie sprawdzisz w konsoli błędów w końcu? Zwrotnego response?
dentopolis
1)czyli zamiast:
  1. $pacjent1 = (int) $_POST['pacjent1'];


powinno być:
  1. $pacjent1 = (string) $_POST['pacjent1'];


czy po prostu:
  1. $pacjent1 = (string) $_POST['pacjent1'];

?


2)mam w odpowiedzi: <b>Parse error</b>: syntax error, unexpected '?' in <b>/opt/lampp/htdocs/a/technikajax.php</b> on line <b>9</b><br />
czyli w linii:
  1. $action = $_POST['action'] questionmark.gif null;
nospor
skaldnia, ktora ci podano a masz parse error, wymaga php7
viking
Stringiem sa domyślnie więc nie musisz rzutować. Potrzebujesz w ogóle to action? Nie kopiuj bezmyślnie kodu.
  1. $action = (isset($_POST['action'])) ? $_POST['action'] : null; // dla php5
  2. //$sql = "UPDATE technik SET pacjent='$pacjent1', technik='$technik1', gabinet='$gabinet1', umowiony='$umowiony1' WHERE id = ?";
  3. $sql = "UPDATE technik SET pacjent=?, technik=?, gabinet=?, umowiony=? WHERE id = ?";
  4. $sth->execute([zmienne z POST po kolei]);
dentopolis
więc mam taki kod i odpowiedź "zaktualizowano 0 rekordów" jako odpowiedź z konsoli:

  1. <?php
  2. header("Content-Type: application/json;charset=utf-8");
  3.  
  4. $id = (int) $_POST['id'];
  5. $pacjent1 = $_POST['pacjent1'];
  6. $technik1 = $_POST['technik1'];
  7. $gabinet1 = $_POST['gabinet1'];
  8. $umowiony1 = $_POST['umowiony1'];
  9. $action = $_POST['action'];
  10.  
  11.  
  12. if ($action === 'update') {
  13. try {
  14. $dbh = new PDO('mysql:dbname=gabinet;host=127.0.0.1', 'root', '', [
  15. PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
  16. ]
  17. );
  18. $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  19.  
  20. $action = (isset($_POST['action'])) ? $_POST['action'] : null;
  21. $sql = "UPDATE technik SET pacjent=?, technik=?, gabinet=?, umowiony=? WHERE id = ?";
  22. $sth = $dbh->prepare($sql);
  23. $sth->execute([$id, $pacjent1, $technik1, $gabinet1, $umowiony1]);
  24.  
  25.  
  26.  
  27.  
  28. echo json_encode([
  29. 'message' => sprintf('zaktualizowano %d rekordów', $sth->rowCount())
  30. ]);
  31. } catch(PDOException $e) {
  32. http_response_code(500);
  33. echo json_encode([
  34. 'message' => 'Klasa PDO zwróciła wyjątek: ' . $e->getMessage()
  35. ]);
  36. }
  37. } else {
  38. http_response_code(500);
  39. echo json_encode([
  40. 'message' => 'Nieprawidłowa akcja'
  41. ]);
  42. }
viking
$sth->execute([$pacjent1, $technik1, $gabinet1, $umowiony1, $id]);
dentopolis
nic to nie zmieniło, ten sam komunikat
nospor
var_dump($id);
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.