Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [AJAX][MySQL][PHP] prosty formularz ajax
dentopolis
post 23.05.2017, 22:49:47
Post #1





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


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
Go to the top of the page
+Quote Post
bostaf
post 24.05.2017, 10:23:13
Post #2





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

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


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);
Go to the top of the page
+Quote Post
dentopolis
post 24.05.2017, 11:29:14
Post #3





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


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. ?>
Go to the top of the page
+Quote Post
viking
post 24.05.2017, 11:32:54
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


if (empty($_POST['pacjent1']
Wysyłasz getem, sprawdzasz post. Wysyłaj jeszcze odpowiednie nagłówki w php dla typu json.


--------------------
Go to the top of the page
+Quote Post
dentopolis
post 24.05.2017, 19:48:30
Post #5





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


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?
Go to the top of the page
+Quote Post
viking
post 24.05.2017, 20:15:34
Post #6





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Ma być tak, jak to ustawiasz w type. Ty decydujesz czym wysyłasz.


--------------------
Go to the top of the page
+Quote Post
dentopolis
post 24.05.2017, 21:10:04
Post #7





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


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. ?>
Go to the top of the page
+Quote Post
viking
post 25.05.2017, 07:01:48
Post #8





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


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.


--------------------
Go to the top of the page
+Quote Post
dentopolis
post 25.05.2017, 09:47:25
Post #9





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


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'];
Go to the top of the page
+Quote Post
viking
post 25.05.2017, 10:03:21
Post #10





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


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.

Ten post edytował viking 25.05.2017, 12:24:52


--------------------
Go to the top of the page
+Quote Post
kayman
post 25.05.2017, 10:10:42
Post #11





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


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.
Go to the top of the page
+Quote Post
bostaf
post 25.05.2017, 11:27:19
Post #12





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

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


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.
Go to the top of the page
+Quote Post
dentopolis
post 25.05.2017, 22:29:59
Post #13





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


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. ?>
Go to the top of the page
+Quote Post
viking
post 26.05.2017, 04:33:26
Post #14





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


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.

Ten post edytował viking 26.05.2017, 06:43:27


--------------------
Go to the top of the page
+Quote Post
dentopolis
post 26.05.2017, 08:55:50
Post #15





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


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]
Go to the top of the page
+Quote Post
viking
post 26.05.2017, 09:04:30
Post #16





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


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?

Ten post edytował viking 26.05.2017, 09:04:51


--------------------
Go to the top of the page
+Quote Post
dentopolis
post 26.05.2017, 12:47:59
Post #17





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


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;


Ten post edytował dentopolis 26.05.2017, 12:48:26
Go to the top of the page
+Quote Post
nospor
post 26.05.2017, 13:09:30
Post #18





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




skaldnia, ktora ci podano a masz parse error, wymaga php7


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

"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
viking
post 26.05.2017, 13:28:08
Post #19





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


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]);


--------------------
Go to the top of the page
+Quote Post
dentopolis
post 26.05.2017, 15:09:26
Post #20





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


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. }


Ten post edytował dentopolis 26.05.2017, 15:27:53
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 19.07.2025 - 08:32