Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Dodawanie rekordów do tabeli z formularza
Devlock
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 23.01.2014

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


Witam,

mam taki problem, że chciałem dodawać do tabeli nowe rekordy przez formularze. Znalazłem i zmodyfikowałem dwa skrypty i niby się wykonuje operacja ale nie dodaje ich do bazy. Oto one:
  1. <?php
  2.  
  3. if(empty($_POST['temat'])&&empty($_POST['tresc'])){
  4.  
  5. ?>
  6. <form action="index.php" method="post">
  7. Imie: <input type="text" value="" name="imie" /><br />
  8. Nazwisko <textarea name="nazwisko"></textarea><br />
  9. <input type="submit" value="Wyslij" />
  10. </form>
  11. <?php
  12.  
  13. }else{
  14. function lacz_bd()
  15. {
  16. $db = new mysqli('localhost', 'root', 'haslo', 'wypozyczalnia_samochodow');
  17. if (! $db)
  18. return false;
  19. $db->autocommit(TRUE);
  20. return $db;
  21. }
  22. $imie = $_POST['imie'];
  23. $imie = addslashes($imie);
  24. $nazwisko = $_POST['nazwisko'];
  25. $nazwisko = addslashes($nazwisko);
  26.  
  27. $db = lacz_bd();
  28.  
  29. $zapytanie = "insert into klienci (id, imie, nazwisko) values ('', '$imie', '$nazwisko')";
  30.  
  31. $wynik = $db->query($zapytanie);
  32.  
  33. if($wynik) echo 'Dodano nowy rekord';
  34. else echo 'Błąd podczas dodawania';
  35. }
  36. ?>


i

  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. <input type="submit" value="dodaj" />
  7. </form>
  8.  
  9. <?php
  10.  
  11. $imie = (isset($_POST['imie']));
  12. $nazwisko = (isset($_POST['nazwisko']));
  13.  
  14. if($imie and $nazwisko) {
  15.  
  16.  
  17. $connection = @mysql_connect('localhost', 'root', '')
  18. or die('Brak połączenia z serwerem MySQL');
  19. $db = @mysql_select_db('wypozyczalnia_samochodow', $connection)
  20. or die('Nie mogę połączyć się z bazą danych');
  21.  
  22.  
  23. $ins = @mysql_query("INSERT INTO 'klienci' SET imie='$imie', nazwisko='$nazwisko'");
  24.  
  25. if($ins) echo "Rekord został dodany poprawnie";
  26. else echo "Błąd nie udało się dodać nowego rekordu";
  27.  
  28. mysql_close($connection);
  29. }
  30.  
  31. ?>


Wiecie w czym problem?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Usuń wszystkie @ z drugiego kodu i spróbuj ponownie
Go to the top of the page
+Quote Post
Devlock
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 23.01.2014

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


Nie pomogło niestety. Dalej to samo.
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




1) Nazw tabel nie bierze sie w apostrofy
2) Tu masz info jak analizowac skrypty i jak wyswietlac bledy
Temat: Jak poprawnie zada pytanie
Go to the top of the page
+Quote Post
Devlock
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 23.01.2014

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


Błąd zapytania wyświetla się:
Duplicate entry '0' for key 'PRIMARY
Kod wygląda tak:
  1. <?php
  2. ini_set( 'display_errors', 'On' );
  3. error_reporting( E_ALL );
  4. $imie = (isset($_POST['imie']));
  5. $nazwisko = (isset($_POST['nazwisko']));
  6. $adres = (isset($_POST['adres']));
  7. $wypozyczony_model = (isset($_POST['wypozyczony_model']));
  8. $data_wypozyczenia = (isset($_POST['data_wypozyczenia']));
  9. $data_zwrotu = (isset($_POST['data_zwrotu']));
  10.  
  11. if($imie and $nazwisko and $adres and $wypozyczony_model and $data_wypozyczenia and $data_zwrotu) {
  12.  
  13.  
  14. $connection = mysql_connect('localhost', 'root', '')
  15. or die('Brak połączenia z serwerem MySQL');
  16. $db = mysql_select_db('wypozyczalnia_samochodow', $connection)
  17. or die('Nie mogę połączyć się z bazą danych');
  18.  
  19.  
  20. $ins = mysql_query("INSERT INTO klienci SET indeks='', imie='$imie', nazwisko='$nazwisko', adres='$adres', wypozyczony_model='$wypozyczony_model', data_wypozyczenia='$data_wypozyczenia', data_zwrotu='$data_zwrotu'");
  21.  
  22. if($ins) echo "Rekord został dodany poprawnie";
  23. else echo "Błąd nie udało się dodać nowego rekordu" .mysql_error();
  24.  
  25. mysql_close($connection);
  26. }
  27.  
  28.  
  29. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Pewnie nie ustawiles AUTOINCREMENT dla klucza glownego w tabeli klienci

Zas jesli twoim kluczem glownym jest to:
indeks
to albo wywal ten zapis indeks='', (pod warunkiem ze jest to AUTOINCREMENT)
albo ustawiaj dla indeks koleną wartosc.
Go to the top of the page
+Quote Post
Devlock
post
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 23.01.2014

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


OK teraz po włączeniu AUTOINCREMENT działa, jednak zamiast wpisywanych wartości w formularzu pojawiają się same "1" a data "00-00-0000", oraz dodaje nowy rekord za każdym razem po odświeżeniu strony głównej.
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




$imie = (isset($_POST['imie']));
No bo zamiast wartosci pola to ty przypisujesz TRUE/1 albo FALSE/0 w zaleznosci czy to pole istnieje czy nie...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:16