Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dodawanie rekordów do tabeli z formularza
Forum PHP.pl > Forum > Przedszkole
Devlock
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?
Turson
Usuń wszystkie @ z drugiego kodu i spróbuj ponownie
Devlock
Nie pomogło niestety. Dalej to samo.
nospor
1) Nazw tabel nie bierze sie w apostrofy
2) Tu masz info jak analizowac skrypty i jak wyswietlac bledy
Temat: Jak poprawnie zada pytanie
Devlock
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. ?>
nospor
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.
Devlock
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.
nospor
$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...
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.