Wątek przeniesiony 2020-06-20 10:53 z Bazy danych przez cerrato.

Nie mogę dodawać rekordu do bazy danych

0

Witam

Mam problem z stworzeniem formularza do dodawania nowego rekordu do bazy danych phpmyadmin.

Kod wygląda następująco:

<?php require ('connect_klienci.php'); 
 
	
	$Imię=$_POST['Imię'];
	$Nazwisko=$_POST['Nazwisko'];
	$Marka=$_POST['Marka'];
	$Model=$_POST['Model'];
	$Pojemność=$_POST['Pojemność'];
	$Moc=$_POST['Moc'];
	$Rok=$_POST['Rok'];
 
	
	$zapytanie = "INSERT INTO klienci (imie, nazwisko, marka, model, pojemnosc, moc, rok) VALUES ('$Imię','$Nazwisko','$Marka','$Model','$Pojemność','$Moc','$Rok')" or die(mysql_error());
	$wynik = mysqli_query($zapytanie);
	if ($wynik) {
		echo 'Prawidłowo dodano do bazy danych';	
	}
 
	mysqli_close($db);		
?>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
 
<body>
<h3>DODAJ NOWY REKORD DO BAZY</h3>
 

<form name="form1" method="post" action="klienci.php"> 
  Imię: <input name="imie" type="text" size="20"> <br>
  Nazwisko: <input type="text" name="nazwisko" size="20"><br>
  Marka: <input type="text" name="marka" size="20"><br>
  Model: <input type="text" name="model" size="20"><br>
  Pojemność: <input type="text" name="pojemnosc" size="20"><br>
  Moc: <input type="text" name="moc" size="20"><br>
  Rok: <input type="text" name="rok" size="20"><br>
  <input value="Dodaj" type="submit">
</form>

 
</br>
<a href="klienci.php"></a>
</body>
</html>
3

Phpmyadmin to nie rodzaj bazy a program/interfejs do jej obsługi. Bazę pewnie masz mysql lub mariadb.
Masz jakieś błędy?
Próbowałeś wykonać ręcznie takiego inserta z poziomu samego phpmyadmin?
Na pewno masz już połączenie z bazą i jakieś inne zapytania się wykonują?

3

Napisz może, na czym ten problem polega, bo na razie tylko wiemy, że "masz problem z stworzeniem formularza", ale to zdecydowanie za mało informacji.

Czy dostajesz jakieś błędy? Jeśli tak, to jakie? Czy masz kłopot z samym formularzem w HTML czy raczej chodzi o to, że polecenie INSERT INTO nie daje pożądanych efektów?

Poza tym zainteresuj się PDO - https://www.php.net/manual/en/intro.pdo.php czy https://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO, bo to co robisz jest bardzo złe. A wstawianie bezpośrednio wartości przekazanych przez $_POST jest proszeniem się o kłopoty, i to ogromne (z wyciekiem albo zniknięciem całej bazy włącznie).

Poza tym, jak słusznie zauważył @jurek1980, PHPMyAdmin to jest narzędzie służące do zarządzania bazą, taki menadżer bazy. Chyba trochę mylą Ci się pojęcia ;)

0
jurek1980 napisał(a):

Phpmyadmin to nie rodzaj bazy a program/interfejs do jej obsługi. Bazę pewnie masz mysql lub mariadb.
Masz jakieś błędy?
Próbowałeś wykonać ręcznie takiego inserta z poziomu samego phpmyadmin?
Na pewno masz już połączenie z bazą i jakieś inne zapytania się wykonują?

Mam już zrobiony jeden plik który wyświetla mi z bazy danych wszystkie rekordy do tabelki w htmlu za pomocą INSERT.

A w tym formularzu to pojawiają mi się błędy:

*Notice: Undefined index: Imię in C:\xampp1\htdocs\Strona\formularz.php on line 32

Notice: Undefined index: Nazwisko in C:\xampp1\htdocs\Strona\formularz.php on line 33

Notice: Undefined index: Marka in C:\xampp1\htdocs\Strona\formularz.php on line 34

Notice: Undefined index: Model in C:\xampp1\htdocs\Strona\formularz.php on line 35

Notice: Undefined index: Pojemność in C:\xampp1\htdocs\Strona\formularz.php on line 36

Notice: Undefined index: Moc in C:\xampp1\htdocs\Strona\formularz.php on line 37

Notice: Undefined index: Rok in C:\xampp1\htdocs\Strona\formularz.php on line 38

Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\xampp1\htdocs\Strona\formularz.php on line 42

Notice: Undefined variable: db in C:\xampp1\htdocs\Strona\formularz.php on line 47

Warning: mysqli_close() expects parameter 1 to be mysqli, null given in C:\xampp1\htdocs\Strona\formularz.php on line 47 *

I nawet jak spróbuje wpisać dane do formularza to nie pojawiają się one w bazie danych.

3

W tej chwili przy wywołaniu strony która najpierw ma pokazać pola od razu próbujesz zrobić ten swój Insert.
Sprawdzaj chociaż czy w tablicy $_POST masz te dane przez np. isset() to te wszystkie błędy typu

Notice: Undefined index: Imię in C:\xampp1\htdocs\Strona\formularz.php on line 32

To:

Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\xampp1\htdocs\Strona\formularz.php on line 42

Tu z kolei sprawa wydaje się być w miarę jasna. Podajesz jeden parametr jakim jest Twoje zapytanie. A gdzie parametr z informacją do jakiej bazy chcesz się łączyć?
Zobacz tu : https://www.php.net/manual/en/mysqli.query.php
Pierwszy parametr to właśnie połączenie: mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] ) : mixed

2
arokos123 napisał(a):

Mam już zrobiony jeden plik który wyświetla mi z bazy danych wszystkie rekordy do tabelki w htmlu za pomocą INSERT.

Sorry, ale to zdanie to ... w trosce o polityczną poprawność nie napiszę co. Mówiąc ludowym językiem, kupy się nie trzyma.

Jak ujednolicisz pisownię zmiennych POST (zmieniasz małe/duże) to połowa błędów ustąpi.
Na drugą połowę pomoże ksiazka / dobry kurs i oficjalna dokumentacja

0
jurek1980 napisał(a):

W tej chwili przy wywołaniu strony która najpierw ma pokazać pola od razu próbujesz zrobić ten swój Insert.
Sprawdzaj chociaż czy w tablicy $_POST masz te dane przez np. isset() to te wszystkie błędy typu

Notice: Undefined index: Imię in C:\xampp1\htdocs\Strona\formularz.php on line 32

To:

Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\xampp1\htdocs\Strona\formularz.php on line 42

Tu z kolei sprawa wydaje się być w miarę jasna. Podajesz jeden parametr jakim jest Twoje zapytanie. A gdzie parametr z informacją do jakiej bazy chcesz się łączyć?
Zobacz tu : https://www.php.net/manual/en/mysqli.query.php
Pierwszy parametr to właśnie połączenie: mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] ) : mixed

Nie rozumiem za bardzo tego połączenia mysqli query.
Ogólnie to sorki że większości nie ogarniam ale dopiero się tego uczę z kursów na youtubie.

Próbowałem to zrobić na wiele sposobów korzystając z wielu poradników ale za każdym razem wyświetlał się inny błąd którego nie potrafiłem rozwiązać.
Przykładowo ostatnio korzystałem z tego poradnika:

I tam gościowi wszystko działa a mi już nie zbyt i nie ogarniam tego za bardzo nie wiem gdzie szukać odpowiedzi na to, bo wpisując na internet ten błąd to wyskakują mi rozwiązania które nie mam pojęcia jak dodać do mojego kodu. Tak samo twoja odpowiedź mi niezbyt dużo mówi i nie wiem jak to zastosować w moim kodzie

3

Z czasem przyjdzie Ci bardzo ważna nauka w postaci czytania dokumentacji (najlepiej żebyś to zaczął jak najwcześniej).
Masz oficjalne informacje o funkcji https://www.php.net/manual/en/mysqli.query.php
Pierwszy parametr tej funkcji to $link czyli połączenie do bazy.
link Procedural style only: A link identifier returned by mysqli_connect() or mysqli_init()
Dopiero drugi parametr to zapytanie. Oba te parametry są wymagane. Dlatego dostajesz wspomniany błąd o tym, że ta funkcja musi mieć te dwa parametry. Trzeci parametr jest opcjonalny.
Skoro masz już gdzieś w kodzie jakiś SELECT wykorzystujący połączenie to gdzieś najpierw musiałeś je wywołać. Podejrzyj sobie ten swój kod.
Kursu oglądać nie będę, bo trochę szkoda mi czasu, nie podejmę się tym samym oceny merytorycznej czy porównania gdzie są błędy między Twoim a tamtym kodem.

0
$mysqli = new mysqli("localhost", "root", "", "zamówienia");
$link = $zapytanie
$zapytanie = "INSERT INTO klienci (Imię, Nazwisko, Marka, Model, Pojemnosc, Moc, Rok) VALUES ('$Imię','$Nazwisko','$Marka','$Model','$Pojemność','$Moc','$Rok')" or die(mysql_error());

Coś takiego? Pierwsze połączenie z bazą danych a drugie link do zapytania

2

Nie do końca.
Zobacz tutaj: http://webmaster.helion.pl/index.php/kursmysql-mysql-a-php
Zastanów się po co piszesz to:

$link = $zapytanie

w dodatku bez średnika na końcu linii.
Przeczytaj dokładnie wskazany artykuł, oraz dokumentację poleceń:
https://www.php.net/manual/en/function.mysqli-connect.php
https://www.php.net/manual/en/mysqli.query.php

Potrzebujesz:

  • połączyć się z bazą i otrzymać w wyniku działania takie połączenie zapisane do jakiejś zmiennej
  • wykonać zapytanie z użycie wcześniej otrzymanego połączenia: czyli funkcja potrzebuje dwóch różnych parametrów w odpowiedniej kolejności.

Próbuj dalej, nie poddawaj się.

0

Czyli tak tworzę sobie połączenie z bazą danych

$link = mysqli_connect(

            'localhost',  /* nazwa komputera, na którym działa MySQL */

            'root',       /* nazwa użytkownika */

            '',   /* hasło */

            'zamówienia');     /* domyślna baza danych */

Następnie wykonuje zapytanie z użyciem tego parametru $link oraz $zapytanie

$zapytanie = "INSERT INTO klienci (Imię, Nazwisko, Marka, Model, Pojemnosc, Moc, Rok) VALUES ('$Imię','$Nazwisko','$Marka','$Model','$Pojemność','$Moc','$Rok')" or die(mysql_error());
if ($result = mysqli_query($link, $zapytanie)) {

 
 print("Lista towarów:\n"); I tutaj nie wiem po co mam wyświetlać jakieś dane jak już mam stworzony plik który wyświetla dane z bazy danych oraz mam stworzony przycisk Dodaj który po naciśnięciu przekierowuje do pliku który wyświetla rekordy z bazy danych.
   


    while( $row = mysqli_fetch_assoc($zapytanie) ){

        printf("%s (%s)\n", $row['description'], $row['sell_price']);

    }



    mysqli_free_result($zapytanie);

}
0

No nie musisz wyświetlać nic jak dane wpisujesz do bazy. To przykład. Zachowanie zawsze jest "podobne". Chodzi o to, żebyś miał porównanie, zobaczył analogię i jak to działa.

0

Nadal mam ten sam błąd dotyczący tych 2 parametrów

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
 
<body>
<h3>DODAJ NOWY REKORD DO BAZY</h3>
 

<form name="form1" method="post" action="klienci.php"> 
  Imię: <input name="imie" type="text" size="20"> <br>
  Nazwisko: <input type="text" name="nazwisko" size="20"><br>
  Marka: <input type="text" name="marka" size="20"><br>
  Model: <input type="text" name="model" size="20"><br>
  Pojemność: <input type="text" name="pojemnosc" size="20"><br>
  Moc: <input type="text" name="moc" size="20"><br>
  Rok: <input type="text" name="rok" size="20"><br>
  <input value="Dodaj" type="submit">
</form>

 
</br>
<a href="klienci.php"></a>
</body>
</html>
<?php  
	
	$link = mysqli_connect(

            'localhost',  /* nazwa komputera, na którym działa MySQL */

            'root',       /* nazwa użytkownika */

            '',   /* hasło */

            'zamówienia');     /* domyślna baza danych */
	
	$zapytanie = "INSERT INTO klienci (Imię, Nazwisko, Marka, Model, Pojemnosc, Moc, Rok) VALUES ('$Imię','$Nazwisko','$Marka','$Model','$Pojemność','$Moc','$Rok')" or die(mysql_error());
	
	if ($result = mysqli_query($link, $zapytanie)) {

	

    while( $row = mysqli_fetch_assoc($zapytanie) ){
		
		echo 'Prawidłowo dodano do bazy danych';	
    

    }

    mysqli_free_result($zapytanie);

}
	$Imię=$_POST['Imię'];
	$Nazwisko=$_POST['Nazwisko'];
	$Marka=$_POST['Marka'];
	$Model=$_POST['Model'];
	$Pojemność=$_POST['Pojemność'];
	$Moc=$_POST['Moc'];
	$Rok=$_POST['Rok'];
	
	
	
 
	$mysqli->close();	
?>
0

Dobra spokojnie.
Przemyśl co robisz, nie kopiuj na hura:

<?php
//Czy na pewno masz połączenie do bazy z właściwym loginem i hasłem?
$link = mysqli_connect(
    'localhost',  /* nazwa komputera, na którym działa MySQL */
    'root',       /* nazwa użytkownika */
    '',   /* hasło */
    'zamówienia');     /* domyślna baza danych */
//Możemy to sprawdzić wykonując takie coś:
if (!$link) {
    printf("Brak połączenia z serwerem MySQL. Kod błędu: %s\n", mysqli_connect_error());
    exit;
 }
//Napiszmy sobie zapytanie ręczenie, na razie odpuść przesyłanie danych przez formularz
$zapytanie = "INSERT INTO klienci (Imię, Nazwisko, Marka, Model, Pojemnosc, Moc, Rok) VALUES ('Adam','Iksinski','VW','wiadomo Passat B5','1998','200','2000')";
// Teraz wykonujemy zapytanie, funkcja musi wiedzieć do jakiej bazy(połączenia) mamy się odnieść, oraz 
// jakie ma wykonać zapytanie
$result = mysqli_query($link, $zapytanie);
// to teraz sobie sprawdźmy czy zapytanie się wykonało
if($result){
    echo 'Prawidłowo dodano do bazy danych'; 
}
0

Tak prawidłowo dodało te rekordy do bazy.

To teraz mam wkleić do tego htmla i zmienić zapytanie na:

$zapytanie = "INSERT INTO klienci (Imię, Nazwisko, Marka, Model, Pojemność, Moc, Rok) VALUES ('imie','nazwisko','marka','model','pojemnosc','moc','rok')";

I teraz sprawdziłem dane się dodają tylko problem jest z zmiennymi bo dodaje się napis imie, nazwisko itp.

Te values w nawiasie to wartości z formularza

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

Czy coś innego?

1

Bo to:

'imie'

jest string(napis,literał) a musisz tu jakoś dodać te wartości z formularza.
W tym tutorialu w polskim języku masz podany przykład przy użyciu bind_params
Ucz się już prawidłowo tak by nie było potencjalnego SQL injection jak pisał już @cerrato.

0

Wolałbym jakiś prosty wariant wybrać na początek.

Nie wiem jak mam dodać wartości z formularza do baz danych mógłbyś jakąś prostą metodę wysłać?

1

No to nie zalecany prosty wariant:

  • sprawdzasz czy tablica $_POST ma dany jakąś wartość w danym kluczu np.
if(isset($_POST['imie'])){
    $imie = $_POST['imie'];
}
if(isset($_POST['nazwisko'])){
    $nazwisko= $_POST['nazwisko'];
}
  • jeśli masz wszystkie potrzebne klucze i zmiene składasz zapytanie.
if ($imie AND $nazwisko){
    $zapytanie = "INSERT INTO klienci (Imię, Nazwisko) VALUES ($imie,$nazwisko)";
}

To sprawdzanie jest po to byś po pierwsze nie wywoływał zapytania INSERT na pustych wartościach kiedy po raz pierwszy wyświetlasz stronę.
Bo kod linijka po linijce się wykona, a przy pierwszym wyświetleniu jeszcze nikt niczego nie wpisał. Po drugie sprawdzasz czy na pewno wszsytkie pola są wypełnione.
Posklejaj sobie resztę tych parametrów i działaj dalej.

0

Chyba nigdy tego nie zrobię

Mam jakiś dziwny błąd że w tych wszystkich warunkach if brakuje nawiasu "}"

if(isset($_POST['imie']){
	 $Imie = $_POST['imie'];
}
if(isset($_POST['nazwisko']){
$Nazwisko= $_POST['nazwisko'];
}
if(isset($_POST['marka']){
$Marka= $_POST['marka'];
}
if(isset($_POST['model']){
$Model= $_POST['model'];
}
if(isset($_POST['pojemnosc']){
$Pojemnosc= $_POST['pojemnosc'];
}
if(isset($_POST['moc']){
$Moc= $_POST['moc'];
}
if(isset($_POST['rok']){
$Rok= $_POST['rok'];
}


if ($Imie AND $Nazwisko AND $Marka AND $Model AND $Pojemność AND $Moc AND $Rok){
$zapytanie = "INSERT INTO klienci (imię, nazwisko, marka, model, pojemność, moc, rok) VALUES ('$Imię','$Nazwisko','$Marka','$Model','$Pojemność','$Moc','$Rok')";
}
0
if(isset($_POST['imie'])){
$Imie = $_POST['imie'];
}
if(isset($_POST['nazwisko'])){
$Nazwisko= $_POST['nazwisko'];
}
if(isset($_POST['marka'])){
$Marka= $_POST['marka'];
}
if(isset($_POST['model'])){
$Model= $_POST['model'];
}
if(isset($_POST['pojemnosc'])){
$Pojemnosc= $_POST['pojemnosc'];
}
if(isset($_POST['moc'])){
$Moc= $_POST['moc'];
}
if(isset($_POST['rok'])){
$Rok= $_POST['rok'];
}


if ($Imie AND $Nazwisko AND $Marka AND $Model AND $Pojemność AND $Moc AND $Rok){
$zapytanie = "INSERT INTO klienci (imię, nazwisko, marka, model, pojemność, moc, rok) VALUES ('$Imię','$Nazwisko','$Marka','$Model','$Pojemność','$Moc','$Rok')";
}
$zapytanie = "INSERT INTO klienci (imię, nazwisko, marka, model, pojemność, moc, rok) VALUES ('$Imię','$Nazwisko','$Marka','$Model','$Pojemność','$Moc','$Rok')";
$result = mysqli_query($link, $zapytanie);
if($result){
    echo 'Prawidłowo dodano do bazy danych'; 
}

Mam taki fragment kodu i wyświetla mi się błąd
Notice: Undefined variable: Imię in C:\xampp1\htdocs\Strona\formularz.php on line 40

z tej lini

$zapytanie = "INSERT INTO klienci (imię, nazwisko, marka, model, pojemność, moc, rok) VALUES ('$Imię','$Nazwisko','$Marka','$Model','$Pojemność','$Moc','$Rok')";
1

Cały insert masz mieć w ifie. Tłumaczyłem, że tak właśnie będziesz miał błąd.
Zanim napiszesz zastanów się jak program działa.
P.S.
Zmienne oznaczaj z małej litery.

0

Dałem to do ifa i został mi ostatni błąd

Notice: Undefined variable: imię in C:\xampp1\htdocs\Strona\formularz.php on line 37

Linia 37:

if ($imię AND $nazwisko AND $marka AND $model AND $pojemność AND $moc AND $rok){
1

Jak znam życie to masz imię i imie i tu dochodzimy do następnego punktu. Używaj zmiennych w języku angielskim i na pewno staraj się omijać wszelkie "polskie ogonki".

1
arokos123 napisał(a):

Dałem to do ifa i został mi ostatni błąd

Notice: Undefined variable: imię in C:\xampp1\htdocs\Strona\formularz.php on line 37

Linia 37:

if ($imię AND $nazwisko AND $marka AND $model AND $pojemność AND $moc AND $rok){

Człowieku, tak sie nie da.

Z czytaniem bardzo klarownego komunikatu latasz na forum.
Ewentualne uwagi tu otrzymane nakładasz ZUPEŁNIE bez zrozumienia ich treści, bez zrozumienia najbardziej "podstawowych podstaw" języka.

Przestań strzelać na oślep, wyłącz się z kodowania tego "projektu", weź książkę (kursy w necie są często bardzo kiepskiej wartości, ale nieprzemyślane co do układu, planu i dydaktyki)

0

Zmieniłem te ogonki bez polskich znaków i z małych liter i jest taki sam błąd.
Nie wiem ale w phpmyadmin mam normalne zmienne typu Imię Nazwisko czy Pojemność

0
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
 
<body>
<h3>DODAJ NOWY REKORD DO BAZY</h3>
 

<form name="form1" method="post" action="klienci.php"> 
  Imię: <input name="imie" type="text" size="20"> <br>
  Nazwisko: <input type="text" name="nazwisko" size="20"><br>
  Marka: <input type="text" name="marka" size="20"><br>
  Model: <input type="text" name="model" size="20"><br>
  Pojemność: <input type="text" name="pojemnosc" size="20"><br>
  Moc: <input type="text" name="moc" size="20"><br>
  Rok: <input type="text" name="rok" size="20"><br>
  <input value="Dodaj" type="submit">
</form>

 
</br>
<a href="klienci.php"></a>
</body>
</html>
<?php

$link = mysqli_connect(
    'localhost',  
    'root',       
    '',   
    'zamówienia');     

if (!$link) {
    printf("Brak połączenia z serwerem MySQL. Kod błędu: %s\n", mysqli_connect_error());
    exit;
 }
 





if(isset($_POST['imie'])){
$imie = $_POST['imie'];
}
if(isset($_POST['nazwisko'])){
$nazwisko= $_POST['nazwisko'];
}
if(isset($_POST['marka'])){
$marka= $_POST['marka'];
}
if(isset($_POST['model'])){
$model= $_POST['model'];
}
if(isset($_POST['pojemnosc'])){
$pojemnosc= $_POST['pojemnosc'];
}
if(isset($_POST['moc'])){
$moc= $_POST['moc'];
}
if(isset($_POST['rok'])){
$rok= $_POST['rok'];
}
if ($imie AND $nazwisko AND $marka AND $model AND $pojemnosc AND $moc AND $rok){
	
$zapytanie = "INSERT INTO klienci (imie, nazwisko, marka, model, pojemnosc, moc, rok) VALUES ('$imie','$nazwisko','$marka','$model','$pojemnosc','$moc','$rok')";
$result = mysqli_query($link, $zapytanie);
if($result){
    echo 'Prawidłowo dodano do bazy danych'; 
}
}




?>


Nie wiem co tu jest nie tak próbowałem pozmieniać zmienne bo myślałem że jakaś literówka w zmiennej jest ale nie mam pojęcia.
Błąd jest taki sam:
Notice: Undefined variable: imie in C:\xampp1\htdocs\Strona\dodaj_klienta.php on line 67

Proszę o pomoc bo już mój umysł nie wyrabia a chciałbym to dziś dokończyć

1

Chcesz się nauczyć? Jeśli tak to musisz nauczyć się jak działają instrukcje warunkowe itd. Co robią podstawowe polecenia języka.
Zobacz coś takiego, porównaj i przemyśl dzlaczego Twoja zmienna nie była zainicjowana:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Untitled Document</title>
</head>

<body>
    <h3>DODAJ NOWY REKORD DO BAZY</h3>

    <form name="form1" method="post" action="klienci.php">
        Imię: <input name="imie" type="text" size="20"> <br>
        Nazwisko: <input type="text" name="nazwisko" size="20"><br>
        Marka: <input type="text" name="marka" size="20"><br>
        Model: <input type="text" name="model" size="20"><br>
        Pojemność: <input type="text" name="pojemnosc" size="20"><br>
        Moc: <input type="text" name="moc" size="20"><br>
        Rok: <input type="text" name="rok" size="20"><br>
        <input value="Dodaj" type="submit">
    </form>

    </br>
    <a href="klienci.php"></a>
</body>

</html>
<?php

$link = mysqli_connect(
    'localhost',
    'root',
    '',
    'zamówienia'
);

if (!$link) {
    printf("Brak połączenia z serwerem MySQL. Kod błędu: %s\n", mysqli_connect_error());
    exit;
}

if (
    isset($_POST['imie']) and isset($_POST['nazwisko']) and isset($_POST['moc']) and isset($_POST['rok'])
    and isset($_POST['marka']) and isset($_POST['model']) and isset($_POST['pojemnosc'])
) {
    $imie = $_POST['imie'];
    $marka = $_POST['marka'];
    $model = $_POST['model'];
    $pojemnosc = $_POST['pojemnosc'];
    $moc = $_POST['moc'];
    $rok = $_POST['rok'];
    if ($imie and $nazwisko and $marka and $model and $pojemnosc and $moc and $rok) {
        $zapytanie = "INSERT INTO klienci (imie, nazwisko, marka, model, pojemnosc, moc, rok) VALUES ($imie,$nazwisko,$marka,$model,$pojemnosc,$moc,$rok)";
        $result = mysqli_query($link, $zapytanie);
    }
    if ($result) {
        echo 'Prawidłowo dodano do bazy danych';
    }
}
0

Czy na pewno ten kod dodaje rekordy bo mi nie działa. Znaczy nie wyskakuje żaden błąd ale nie dodaje rekordu. Sprawdzałem jeszcze raz połączenie z bazą danych i jest połączenie.

1

Pewnie nie wchodzi Ci w jakiś if. To teraz najprostsza sprawa to w każdym if-ie rób sobie debug wyświetlając np.

if(warunek){
    die('w warunku');
}

i tak po kolei a zobaczysz co Ci nie działa.
Printuj i sprawdzaj.

0

Zrobiłem tak i problem jest ten sam

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<link rel="stylesheet" href="style.css">
    <title>Dodaj klienta</title>
</head>

<body>

    <div><br>
	<a href="" class="btn btn-primary">Strona główna</a><br><br>
	<a href="klienci.php" class="btn btn-danger">Klienci</a>
	<a href="naprawy.php" class="btn btn-danger">Naprawy</a>
	<h2>Dodaj nowego klienta</h2>
	<p>Wypełnij dane aby dodać nowego kienta.</p>
    <form name="form1" method="post" action="klienci.php">
        <label>Imię:</label> <br>
		<input name="imie" type="text"> <br>
        <label> Nazwisko: </label> <br>
		<input type="text" name="nazwisko" size="20"><br>
        <label>Marka: </label><br>
		<input type="text" name="marka" size="20"><br>
        <label>Model:</label> <br>
		<input type="text" name="model" size="20"><br>
        <label>Pojemność:</label><br> 
		<input type="text" name="pojemnosc" size="20"><br>
        <label>Moc:</label><br> <input type="text" name="moc" size="20"><br>
        <label>Rok: </label><br><input type="text" name="rok" size="20"><br><br>
        <input type="submit" class="btn btn-danger" value="Dodaj">
		<input type="reset" class="btn btn-primary" value="Wyczyść">
    </form>
	</div>
    </br>
    <a href="klienci.php"></a>
</body>

</html>
<?php

$link = mysqli_connect(
    'localhost',
    'root',
    '',
    'zamówienia'
);

if (!$link) {
    printf("Brak połączenia z serwerem MySQL. Kod błędu: %s\n", mysqli_connect_error());
    exit;
}

if(isset($_POST['imie'])){
$imie = $_POST['imie'];
die('Imie blad');
}
if(isset($_POST['nazwisko'])){
$nazwisko= $_POST['nazwisko'];
die('Nazwisko blad');
}
if(isset($_POST['marka'])){
$marka = $_POST['marka'];
die('Marka blad');
}
if(isset($_POST['model'])){
$model= $_POST['model'];
die('Model blad');
}
if(isset($_POST['pojemnosc'])){
$pojemnosc = $_POST['pojemnosc'];
die('Pojemność blad');
}
if(isset($_POST['moc'])){
$moc= $_POST['moc'];
die('Moc blad');
} 
if(isset($_POST['rok'])){
$rok = $_POST['rok'];
die('Rok blad');
}
   
    if ($imie and $nazwisko and $marka and $model and $pojemnosc and $moc and $rok) {
        $zapytanie = "INSERT INTO klienci (imie, nazwisko, marka, model, pojemnosc, moc, rok) VALUES ($imie,$nazwisko,$marka,$model,$pojemnosc,$moc,$rok)";
        $result = mysqli_query($link, $zapytanie);
   
	if ($result) {
        echo 'Prawidłowo dodano do bazy danych';
    }
	}

Nie wiem co jest nie tak z tym kodem ale wyskakuje że jest imie jakoś źle zdefiniowane.
Kurde i właśnie z tym dodawaniem do baz danych za pomocą formularza mam problem.
Dopiero zaczynam z phpem i chcę się nauczyć z kursów internetowych ale nawet tam przepisując kod to wyskakuje mi jakiś tam błąd którego potem nie mogę rozwiązać.
Może by ktoś doradził co w tym kodzie może być źle?

1 użytkowników online, w tym zalogowanych: 0, gości: 1