Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z dodawaniem rekordów
Forum PHP.pl > Forum > Przedszkole
Durkane
Witam.

Otóż mam mały problem, zrobiłem formularz i napisałem SQL na dodawanie rekordów z formularza do tabeli w bazie, jednak, gdy uzupełniam pola formularza i daje "Dodaj" wyskakuje mi komunikat, że nie udało się dodać rekordów do bazy.(Przeglądałem różne tematy i nic mi z nich nie pomogło :/ ) Oto kod :

  1. <form action="index.php" method="post">
  2. imię :<br />
  3. <input type="text" name="Imie" /><br />
  4. Nazwisko :<br />
  5. <input type="text" name="Nazwisko" /><br />
  6. PESEL :<br />
  7. <input type="text" name="PESEL" /><br />
  8. NIP :<br />
  9. <input type="text" name="NIP" /><br />
  10. Miasto :<br />
  11. <input type="text" name="Miasto" /><br />
  12. Kod pocztowy :<br />
  13. <input type="text" name="Kod Pocztowy" /><br />
  14. Ulica : <br />
  15. <input type="text" name="Ulica" /><br />
  16. Numer Domu : <br />
  17. <input type="text" name="Numer Domu" /><br />
  18. Numer Mieszkania : <br />
  19. <input type="text" name="Numer Mieszkania" /><br />
  20. Status : <br />
  21. <input type="text" name="Status" /><br />
  22. <input type="submit" value="dodaj" />
  23. </form>
  24.  
  25. <?php
  26. // odbieramy dane z formularza
  27. $imie = $_POST['Imie'];
  28. $Nazwisko = $_POST['Nazwisko'];
  29. $PESEL = $_POST['PESEL'];
  30. $NIP = $_POST['NIP'];
  31. $Miasto = $_POST['Miasto'];
  32. $Kod = $_POST['Kod Pocztowy'];
  33. $Ulica = $_POST['Ulica'];
  34. $Dom = $_POST['Numer Domu'];
  35. $Mieszkanie = $_POST['Numer Mieszkania'];
  36. $Status = $_POST['Status'];
  37.  
  38. if($imie and $Nazwisko) {
  39.  
  40. // łączymy się z bazą danych
  41. $connection = @mysql_connect('localhost', 'root', '')
  42. or die('Brak połączenia z serwerem MySQL');
  43. $db = @mysql_select_db('spis', $connection)
  44. or die('Nie mogę połączyć się z bazą danych');
  45.  
  46. // dodajemy rekord do bazy
  47. $ins = @mysql_query("INSERT INTO spis (Imie, Nazwisko, PESEL, NIP, Miasto, Kod Pocztowy, Ulica, Numer
  48.  
  49. Domu, Numer Mieszkania, Status) VALUES ('$imie',
  50.  
  51. $Nazwisko','$PESEL','$NIP','$Miasto','$Kod','$Ulica','$Dom','$Mieszkanie','$Status' ");
  52.  
  53. if($ins) {
  54. echo "Rekord został dodany poprawnie";
  55. }
  56. else {
  57. echo "Błąd nie udało się dodać nowego rekordu";
  58. }
  59. mysql_close($connection);
  60. }
  61. ?>
casperii
Nie stosuj znaku "@" przed wykonaniem zapytania itp. Po 2 stosuj mysqli bo jest nowsze.
  1. $db = new mysqli($db_host, $db_base, $db_pass, $db_user);
  2. $db -> query("SET NAMES 'utf8'");
  3.  
  4. if(!$db){
  5. echo 'Nie można się połączyć z bazą danych.';
  6. }else{
  7. $query = $db->query("INSERT INTO spis (Imie, Nazwisko, PESEL, NIP, Miasto, Kod Pocztowy, Ulica, Numer
  8.  
  9. Domu, Numer Mieszkania, Status) VALUES ('$imie',
  10.  
  11. $Nazwisko','$PESEL','$NIP','$Miasto','$Kod','$Ulica','$Dom','$Mieszkanie','$Status' ");
  12. }
  13. ...
  14.  

Po 3. zmienne nazywaj bez odstępów (spacji).

Po 4. zobacz jak to mniej więcej powinno być:

  1. <form action="index.php" method="post">
  2. imię :<br />
  3. <input type="text" name="imie" /><br />
  4. Nazwisko :<br />
  5. <input type="text" name="nazwisko" /><br />
  6. PESEL :<br />
  7. <input type="text" name="pesel" /><br />
  8. NIP :<br />
  9. <input type="text" name="nip" /><br />
  10. Miasto :<br />
  11. <input type="text" name="miasto" /><br />
  12. Kod pocztowy :<br />
  13. <input type="text" name="kod_pocztowy" /><br />
  14. Ulica : <br />
  15. <input type="text" name="ulica" /><br />
  16. Numer Domu : <br />
  17. <input type="text" name="numer_domu" /><br />
  18. Numer Mieszkania : <br />
  19. <input type="text" name="numer_mieszkania" /><br />
  20. Status : <br />
  21. <input type="text" name="status" /><br />
  22. <input type="submit" value="dodaj" />
  23. </form>



oraz php:
  1. $db = new mysqli($db_host, $db_base, $db_pass, $db_user);
  2. $db -> query("SET NAMES 'utf8'");
  3.  
  4. // odbieramy dane z formularza
  5. $name = $_POST['imie'];
  6. $surname = $_POST['nazwisko'];
  7. $pes = $_POST['pesel'];
  8. $nip = $_POST['nip'];
  9. $city = $_POST['miasto'];
  10. $postcode = $_POST['kod_pocztowy'];
  11. $street = $_POST['ulica'];
  12. $number = $_POST['numer_domu'];
  13. $number2 = $_POST['numer_mieszkania'];
  14. $status = $_POST['status'];
  15. if(!$db){
  16. echo 'Nie można się połączyć z bazą danych.';
  17. }else{
  18. $query = $db->query("INSERT INTO spis (name, surname, pesel, nip, city, post_code, street, number, number2, status) VALUES ('$name',
  19. $surname','$pesel','$nip','$street','$postcode','$street','$number','$number2','$status' ");
  20.  
  21. //tu tworzysz warunek co ma wyświetlić jak doda lub else jeśli nie doda do bazy.
  22. }
Durkane
Ok zrobiłem tak jak napisałeś, nie wyskakuje mi komunikat o tym, że rekord nie został dodany do bazy, jednak i tak i tak nie zostaje dodany do mojej bazy.

  1. // odbieramy dane z formularza
  2. $imie = $_POST['Imie'];
  3. $Nazwisko = $_POST['Nazwisko'];
  4. $PESEL = $_POST['PESEL'];
  5. $NIP = $_POST['NIP'];
  6. $Miasto = $_POST['Miasto'];
  7. $Kod = $_POST['Kod Pocztowy'];
  8. $Ulica = $_POST['Ulica'];
  9. $Dom = $_POST['Numer Domu'];
  10. $Mieszkanie = $_POST['Numer Mieszkania'];
  11. $Status = $_POST['Status'];
  12.  
  13.  
  14. $db = new mysqli('localhost', 'root', '', 'spis');
  15. $db -> query("SET NAMES 'utf8'");
  16.  
  17. if(!db) {
  18. echo 'Nie można się połączyć z bazą danych.';
  19. }
  20. else {
  21. $query = $db -> query("INSERT INTO spis (Imie, Nazwisko, PESEL, NIP, Miasto, Kod Pocztowy, Ulica,
  22.  
  23. Numer Domu, Numer Mieszkania, Status)
  24. VALUES ('$imie',$Nazwisko','$PESEL','$NIP','$Miasto','$Kod','$Ulica','$Dom','$Mieszkanie','$Status' ");
  25. }
casperii
  1. <?php
  2. $dbhost = "localhost"; //host bazy danych
  3. $dbuname = " "; // nazwa użytkownika bazy danych
  4. $dbpass = " "; // hasło do bazy danych
  5. $dbname = " "; //nazwa bazy danych
  6.  
  7.  
  8. $db = new mysqli($dbhost, $dbuname, $dbpass, $dbname);
  9. $db -> query("SET NAMES 'utf8'");
  10.  
  11. if ($db->connect_error) {
  12. die('Connect Error ('.$db->connect_errno.') '. $db->connect_error);
  13. if (mysqli_connect_error()) {
  14. die('Connect Error (' . mysqli_connect_errno() . ') '
  15. . mysqli_connect_error());
  16. }
  17. }else{
  18. // odbieramy dane z formularza
  19. $name = $_POST['imie'];
  20. $surname = $_POST['nazwisko'];
  21. $pes = $_POST['pesel'];
  22. $nip = $_POST['nip'];
  23. $city = $_POST['miasto'];
  24. $postcode = $_POST['kod_pocztowy'];
  25. $street = $_POST['ulica'];
  26. $number = $_POST['numer_domu'];
  27. $number2 = $_POST['numer_mieszkania'];
  28. $status = $_POST['status'];
  29. if(isset($name)){
  30. $query = $db->query("INSERT INTO spis (`name`, `surname`) VALUES ('$name','$surname')");
  31. if($query){
  32. print 'poszło';
  33. }else{
  34. print ('cos nie tak');
  35. }
  36. }
  37. }
  38. ?>
  39. <form action="" method="post">
  40. imię :<br />
  41. <input type="text" name="imie" /><br />
  42. Nazwisko :<br />
  43. <input type="text" name="nazwisko" /><br />
  44. PESEL :<br />
  45. <input type="text" name="pesel" /><br />
  46. NIP :<br />
  47. <input type="text" name="nip" /><br />
  48. Miasto :<br />
  49. <input type="text" name="miasto" /><br />
  50. Kod pocztowy :<br />
  51. <input type="text" name="kod_pocztowy" /><br />
  52. Ulica : <br />
  53. <input type="text" name="ulica" /><br />
  54. Numer Domu : <br />
  55. <input type="text" name="numer_domu" /><br />
  56. Numer Mieszkania : <br />
  57. <input type="text" name="numer_mieszkania" /><br />
  58. Status : <br />
  59. <input type="text" name="status" /><br />
  60. <input type="submit" value="dodaj" />
  61. </form>



Pokaż obecny swój kod.
Durkane
Tak nawiązałem jest "Połączono". Oczywiście zamieniłem miejscami "$dbname" i "$dbuname", ponieważ najpierw jest nazwa użytkownika, a na koniec dopiero nazwa bazy danych o ile dobrze się orientuję.

Niestety nic nie wyświetliło.

  1.  
  2. $dbhost ="localhost";
  3. $dbuname ="root";
  4. $dbpass ="";
  5. $dbname = "spis";
  6.  
  7.  
  8. $db = new mysqli($dbhost, $dbuname, $dbpass, $dbname);
  9. $db -> query("SET NAMES 'utf8'");
  10.  
  11. if($db->connect_error)
  12. {
  13. die('Connect Error ('.$db->connect_errno.') '. $db->connect_error); ;
  14. if (mysqli_connect_error())
  15. {
  16. die('Connect Error (' . mysqli_connect_errno() . ') '
  17. . mysqli_connect_error());
  18. }
  19. }
  20. else
  21. {
  22. // odbieramy dane z formularza
  23. $name = $_POST['imie'];
  24. $surname = $_POST['nazwisko'];
  25. $pes = $_POST['pesel'];
  26. $nip = $_POST['nip'];
  27. $city = $_POST['miasto'];
  28. $postcode = $_POST['kod_pocztowy'];
  29. $street = $_POST['ulica'];
  30. $number = $_POST['numer_domu'];
  31. $number2 = $_POST['numer_mieszkania'];
  32. $status = $_POST['status'];
  33.  
  34. if(isset($name))
  35. {
  36. $query = $db->query("INSERT INTO spis (`name`, `surname`) VALUES ('$name','$surname')");
  37.  
  38. if($query)
  39. {
  40. echo 'poszło';
  41. }
  42. else
  43. {
  44. echo 'Nie poszło';
  45. }
  46. }
  47. }
  48. ?>
  49.  
  50. <br />
  51. <form action="index.php" method="post">
  52. imię :<br />
  53. <input type="text" name="Imie" /><br />
  54. Nazwisko :<br />
  55. <input type="text" name="Nazwisko" /><br />
  56. PESEL :<br />
  57. <input type="text" name="PESEL" /><br />
  58. NIP :<br />
  59. <input type="text" name="NIP" /><br />
  60. Miasto :<br />
  61. <input type="text" name="Miasto" /><br />
  62. Kod pocztowy :<br />
  63. <input type="text" name="Kod Pocztowy" /><br />
  64. Ulica : <br />
  65. <input type="text" name="Ulica" /><br />
  66. Numer Domu : <br />
  67. <input type="text" name="Numer Domu" /><br />
  68. Numer Mieszkania : <br />
  69. <input type="text" name="Numer Mieszkania" /><br />
  70. Status : <br />
  71. <input type="text" name="Status" /><br />
  72. <input type="submit" value="dodaj" />
  73. </form>
  74.  
casperii
<input type="text" name="Imie" /><br />

zamień na:

<input type="text" name="imie" /><br />

pozostałe też pozamieniaj na małe nazwy.
Durkane
Ok teraz wyświetliło "Nie poszło".

EDIT : Ok udało mi się zrobić smile.gif Mały błąd w nazwie teraz był biggrin.gif

Dzięki wielkie za pomoc smile.gif
casperii
oczywiście tam możesz jeszcze zrobić walidację - ale to wszystko zależy od tego do czego to używasz i kto będzie tego używać.
Durkane
Dobra jednak dalej jest błąd jakiś i wyskakuje "Nie poszło". Przy wpisaniu w INSERT tylko imienia i nazwiska wszystko było okej, teraz po wpisaniu wszystkiego nie chce dodać do bazy.
casperii
działaj metodą prób i błędów, być może źle przypisujesz zmienne, być może inne nazwy pól masz w bazie.
Durkane
A jeszcze takie pytanie. Przy pobieraniu z bazy danych rekordów przy polskich znakach mam "?" ustawione mam na utf-8, ale nic to nie zmienia :/ I nie wiem o co z tym chodzi.

Tak w index mam ustawione utf-8 tak samo w bazie ustawione utf8_polish_ci.

Co do dodawania rekordów, wszystko sprawdziłem zgadzają się nazwy z tymi w bazie danych,ale nadal nic to nie dało i nadal nie dodaje ich do bazy. Jeżeli usunę i zostawię tylko "Imie, Nazwisko" to rekord dodaje się bez problemu, natomiast po dodaniu 3 wartości np "Pesel" wtedy wyskakuje, że nie udało się dodać do bazy.
casperii
A kodowanie na stronie masz ustawione utf-8? w bazie też masz utf8? sprawdź w bazie jak to wygląda z polskimi znakami.
Durkane
Witam.
Odświeżam temat, ponieważ po kilku dniach w dalszym ciągu, nie wiem co jest nie tak z tym kodem do dodawania rekordów do bazy danych. Wszystko się zgadza z tym co jest w bazie danych, ale niestety nie chce dodawać do niej rekordów... Jeżeli są to tylko imię i nazwisko dodaje bez problemu, natomiast jeżeli dodam dodatkowe wartości typu pesel,nip to automatycznie zaczyna odmawiać dodania tego do bazy danych.

Czy jest w MySQL czy bazach danych ogólnie blokada na dodawanie większej ilości wartości przez php czy coś takiego o czym ja nowicjusz nie wiem ?
viking
Twoje nazewnictwo kolumn jest fatalne. Duże, małe litery, jakieś spacje w nazwach. Postaraj się to uporządkować albo poprawnie quotuj.
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.