• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nie działa wstawianie danych do bazy przez formularz z PHP

Object Storage Arubacloud
0 głosów
481 wizyt
pytanie zadane 30 lipca 2022 w PHP przez XxThorusxX Użytkownik (500 p.)

Cześć. Dla przypomnienia PHP chcę napisać formularz, z którego dane chcę wstawić do bazy danych. Po kliknięciu przycisku submit, formularz się czyści, a żadne dane nie są wstawiane. Poniżej dodam fragment kodu, który ma za zadanie wstawiać te dane do bazy i formularz. Z góry dzięki za pomoc :)

 

HTML:

<form action="data.php" method="POST">
                Data rozpoczęcia pracy: <input type="date" name="data"> <br>
                Godzina rozpoczęcia pracy: <input type="text" name="start">  <br>
                Godzina zakończenia pracy: <input type="text" name="koniec">  <br>
                Godzin przepracowanych: <input type="number" name="godziny">   <br>
                Ilość zgód: <input type="number" name="zgody">   <br>
                Wynagrodzenie: <input type="text" name="wynagrodzenie">  <br>
                <input type="submit" value="Wyślij" name = "send">
            </form>


PHP: (tutaj dodam, że połączenie z bazą jest już realizowane w sekcji <head> html'a. Połączenie na pewno działa, gdyż instrukcja SELECT w innej sekcji strony działa poprawnie, tylko tu jest problem.  Dodam jeszcze, że zmienna $day powinna być jako data, tak jak w bazie danych

<?php
                    if(isset($_POST["data"]) && isset($POST["start"]) && isset($_POST["koniec"]) && isset($_POST["godziny"]) && isset($_POST["zgody"]) && isset($_POST["wynagrodzenie"]) && isset($_POST["send"]))
                    {
                        $day = date('Y-m-d', strtotime($_POST["data"]));
                        $start = $_POST["start"];
                        $end = $_POST["koniec"];
                        $hours = $_POST["godziny"];
                        $accepts = $_POST["zgody"];
                        $salary = $_POST["wynagrodzenie"];

                        $query = "INSERT INTO `Praca`(`Data pracy`, `Godzina rozpoczęcia`, `Godzina zakończenia`, `Godzin przepracowanych`, `Ilość zgód`, `Wynagrodzenie`) VALUES ('$data','$start','$end, '$hours','$accepts','$salary')";

                        $result = mysqli_query($connect, $query);
                        
                        mysqli_close($connect);
                    }
                    
                ?>

 

komentarz 30 lipca 2022 przez Velta Maniak (52,010 p.)

W zapytaniu uciekł Ci apostrof zamykający przy wywołaniu zmiennej end. Warto to poprawić. ;p

komentarz 30 lipca 2022 przez XxThorusxX Użytkownik (500 p.)
Poprawione, aczkolwiek dalej nie działa :c

Co jeszcze może być nie tak?

2 odpowiedzi

+1 głos
odpowiedź 30 lipca 2022 przez Wiciorny Ekspert (269,710 p.)

Insertujesz tutaj zmienna $data, a nie day 
 

 $query = "INSERT INTO `Praca`(`Data pracy`, `Godzina rozpoczęcia`, `Godzina zakończenia`, `Godzin przepracowanych`, `Ilość zgód`, `Wynagrodzenie`) VALUES ('$data','$start','$end, '$hours','$accepts','$salary')";

A masz coś takiego. 

 $day = date('Y-m-d', strtotime($_POST["data"]));
// a w insercie
 VALUES ('$data','$start','$end, '$hours','$accepts','$salary')";

 

komentarz 30 lipca 2022 przez XxThorusxX Użytkownik (500 p.)
Poprawione, ale dalej nic
komentarz 30 lipca 2022 przez Wiciorny Ekspert (269,710 p.)
mozesz coś więcej jakiś błąd?... bo podejrzewam, że zapytanie
komentarz 30 lipca 2022 przez XxThorusxX Użytkownik (500 p.)
W VS Code nie pokazuje mi błędu, to samo na stronie. Wszystko ładnie wyświetla, wrzucam screena na imgur nawet: https://imgur.com/a/Ruhwf2C
komentarz 30 lipca 2022 przez Wiciorny Ekspert (269,710 p.)

użyj przy nazwach kolumn użyj ` , a nie pojedynczego cudzysłowu,

jesteś pewny, że twoje tabele mają polskie znaki ? 

tabela nie powinna mieć apostrofów/
`Praca`

"INSERT INTO `Praca`
...
powinno byc 
"INSERT INTO Praca

 

komentarz 30 lipca 2022 przez XxThorusxX Użytkownik (500 p.)
Przy nazwach kolumn są ` `, więc to raczej nie to. Tabela ma polskie znaki, kodowanie jest na utf-8mb4_polish_ci
komentarz 30 lipca 2022 przez Wiciorny Ekspert (269,710 p.)
edycja 31 lipca 2022 przez Wiciorny

tak ale TABELA ma znaki, a nie powinna ich mieć
"INSERT INTO Praca... to wyrażenie sql u Ciebie jest `Praca`
 

"INSERT INTO `Praca`
...

powinno byc

"INSERT INTO Praca

 

0 głosów
odpowiedź 30 lipca 2022 przez VBService Ekspert (252,740 p.)

Sprawdź, czy masz poprawnie utworzonego insert-a

<?php
                    if(isset($_POST["data"]) && isset($POST["start"]) && isset($_POST["koniec"]) && isset($_POST["godziny"]) && isset($_POST["zgody"]) && isset($_POST["wynagrodzenie"]) && isset($_POST["send"]))
                    {
                        $day = date('Y-m-d', strtotime($_POST["data"]));
                        $start = $_POST["start"];
                        $end = $_POST["koniec"];
                        $hours = $_POST["godziny"];
                        $accepts = $_POST["zgody"];
                        $salary = $_POST["wynagrodzenie"];
 
                        $query = "INSERT INTO `Praca`(`Data pracy`, `Godzina rozpoczęcia`, `Godzina zakończenia`, `Godzin przepracowanych`, `Ilość zgód`, `Wynagrodzenie`) VALUES ('$day','$start','$end', '$hours','$accepts','$salary')";
                        echo $query;
                        
                        //$result = mysqli_query($connect, $query);
                         
                        //mysqli_close($connect);
                    }
                     
                ?>

 

skopiuj wyświetlony kod i "ręcznie" sprawdź w phpMyAdmin, zobacz jaki kod błędu "wyrzuci".

komentarz 31 lipca 2022 przez VBService Ekspert (252,740 p.)

Wstaw ten kod do data.php

Uruchom stronę, wypełnij formularz, naciśnij Wyślij i zobacz co zwróci var_dump dal $_POST.

Sprawdź tak

<?php
                    var_dump($_POST);

                    if(isset($_POST["data"]) && isset($POST["start"]) && isset($_POST["koniec"]) && isset($_POST["godziny"]) && isset($_POST["zgody"]) && isset($_POST["wynagrodzenie"]) && isset($_POST["send"]))
                    {
                        $day = date('Y-m-d', strtotime($_POST["data"]));
                        $start = $_POST["start"];
                        $end = $_POST["koniec"];
                        $hours = $_POST["godziny"];
                        $accepts = $_POST["zgody"];
                        $salary = $_POST["wynagrodzenie"];
   
                        $query = "INSERT INTO Praca (`Data pracy`, `Godzina rozpoczęcia`, `Godzina zakończenia`, `Godzin przepracowanych`, `Ilość zgód`, `Wynagrodzenie`) VALUES ('$day','$start','$end', '$hours','$accepts','$salary')";
                        echo $query;
                          
                        //$result = mysqli_query($connect, $query);
                           
                        //mysqli_close($connect);
                    }
                       
                ?>

 

komentarz 31 lipca 2022 przez XxThorusxX Użytkownik (500 p.)
1
komentarz 31 lipca 2022 przez VBService Ekspert (252,740 p.)

Ach, tu jest jeszcze błąd laugh

isset($POST["start"]) => isset($_POST["start"])

<?php
                    var_dump($_POST);
 
                    if(isset($_POST["data"]) && isset($POST["start"]) && isset($_POST["koniec"]) && isset($_POST["godziny"]) && isset($_POST["zgody"]) && isset($_POST["wynagrodzenie"]) && isset($_POST["send"]))
                    {
                        $day = date('Y-m-d', strtotime($_POST["data"]));
                        $start = $_POST["start"];
                        $end = $_POST["koniec"];
                        $hours = $_POST["godziny"];
                        $accepts = $_POST["zgody"];
                        $salary = $_POST["wynagrodzenie"];
    
                        $query = "INSERT INTO Praca (`Data pracy`, `Godzina rozpoczęcia`, `Godzina zakończenia`, `Godzin przepracowanych`, `Ilość zgód`, `Wynagrodzenie`) VALUES ('$day','$start','$end', '$hours','$accepts','$salary')";
                        echo $query;
                           
                        //$result = mysqli_query($connect, $query);
                            
                        //mysqli_close($connect);
                    }
                        
                ?>

 

komentarz 31 lipca 2022 przez VBService Ekspert (252,740 p.)

To jest przykład co "wyrzuca" echo

1
komentarz 31 lipca 2022 przez XxThorusxX Użytkownik (500 p.)
Poprawione i... Zadziałało w końcu, wstawia już dane do bazy :D Dzięki wielkie za pomoc :D Taki drobny błąd, a taki kosztowny xD

Podobne pytania

0 głosów
1 odpowiedź 1,419 wizyt
pytanie zadane 21 stycznia 2016 w SQL, bazy danych przez Malolacik De Nowicjusz (190 p.)
0 głosów
1 odpowiedź 176 wizyt
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 31 października 2016 w PHP przez Q_Nick Mądrala (5,010 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...