Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]wysyłanie danych do tabeli z typem date
Darkstorm
post 21.08.2010, 19:44:58
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2010

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


Witam. Mam lamerski problem i chyba zmęczenie materiału daje się we znaki albo sam nie wiem co sad.gif Mam formularz do którego dołączony jest kalendarz. Klikam w kalendarz i w inpucie tekstowym pojawia się wskazana w kalendarzu data w formacie yyyy-mm-dd. Następnie przy użyciu $_Post wyciągam dane z formularza i wrzucam je do zapytania które wysyła je do bazy danych. Problemem jest właśnie pole Data w bazie danych. Typ pola - Date. zamiast pobranej z inputa wartości wrzuca mi "0000-00-00". Już zgłupiałem dlaczego. Nie mam pojęcia o czym zapomniałem. Głowa mnie boli bo 4 dzień z rzędu siedzę w php (ogólnie nad projektem nie nad tym problemem) i zaciąłem się na takim czymś...

dla porządku :

nieszczęsny input:
  1. <input type="text" name="data" id="date1" />


formularz (w sumie chyba starczy tyle żeby pokaząc ze jest $_POST:
  1. <form name="dodaj_seans" action="jakistampehape" method="post">


wyciągam więc dane z formularza:
  1. $data = $_POST['data'];


no i.... co dalej? echem wyrzygałem na ekran czy poprawnie pobrane są dane i jest ok. dane z formularza są jak najbardziej prawidłowe ale juz do sql nie zapisuje się poprawna data tylko wspomniane 0000-00-00

dorzuce jeszcze:

  1. CREATE TABLE `jakastabela` (
  2. `data` date NOT NULL,
  3. `czas` time NOT NULL,
  4.  


pozostałe pola są nieistotne więc je pomijam.


mam jeszcze pytanie - czy nie lepiej zamiast dwóch pól z datą i godziną używać jednego pola typu datetime? i jeśli tak - jak pobrać dane z dwóch inputów i wysłać je poprawnie do bazy danych bo próbowałem też w taki sposób i też mam z tym problemy.

z góry dziękuję za wszelką konstruktywną dyskusję i porady/ wskazówki/pomoc w rozwiązaniu problemu

Ten post edytował Darkstorm 21.08.2010, 19:46:36
Go to the top of the page
+Quote Post
bastard13
post 21.08.2010, 20:03:32
Post #2





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


Jeszcze jakbyś pokazał swoje zapytanie i dodatkowo daj echo $zapytanie i też wrzuć co ci pokazuje.


--------------------
Go to the top of the page
+Quote Post
Darkstorm
post 21.08.2010, 20:11:58
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2010

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


no to może tak:

  1. if (isset($_POST['akceptuj'])) {
  2. if ($film == "" || $data="" ||$time == "" || $sala == "") {
  3. echo "Nie podales wszystkich danych. Wypełnij wszystkie pola";
  4.  
  5. } else {
  6.  
  7. mysql_query('SET NAMES utf8');
  8. $zapis = "INSERT INTO seans(id_filmu,data,czas,sala) VALUES ('$film', '$data','$time','$sala' );";
  9. $wykonaj = mysql_query($zapis) or die("Zapytanie do bazy nie powiodło się. " . mysql_error());
  10.  
  11. echo "Dane zostały zapisane!<br />";
  12. }
  13.  
  14. }


dane są zapisywane w bazie poprawnie, jedynie zamiast pobranej daty pojawiają się same zera.
Go to the top of the page
+Quote Post
bastard13
post 21.08.2010, 20:20:21
Post #4





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


A co ci wyrzuci echo $zapis?


--------------------
Go to the top of the page
+Quote Post
Darkstorm
post 21.08.2010, 20:22:48
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2010

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


absolutnie nic
Go to the top of the page
+Quote Post
bastard13
post 21.08.2010, 20:32:30
Post #6





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


Żartujesz, to jak może ci cokolwiek dodawać do bazy skoro zapytanie jest puste?


--------------------
Go to the top of the page
+Quote Post
Darkstorm
post 21.08.2010, 20:38:47
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2010

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


no wyobraź sobie że nie żartuję smile.gif

dane które wysyłam są pobierane z formularza - napisałem przecież.
tak je sobie pobieram:


  1. $submit = $_POST['akceptuj'];
  2. $data = $_POST['data'];
  3. $time = $_POST['time'];
  4. $film = $_POST['film'];
  5. $sala = $_POST['sala'];


jeśli nie wypełnię prawidłowo lub coś opuszczę to zapytanie się nie wykona. to już sprawdziłem i to działa. problemem jest tylko to że niezależnie od tego co będzie przechowywać zmienna data do bazy danych zostanie dodana wartość 0000-00-00 zamiast wpisanej daty
Go to the top of the page
+Quote Post
vokiel
post 21.08.2010, 20:46:53
Post #8





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Jaki masz typ daty ustawiony w bazie? Jakie ustawienia bazy? Może data jest w innym formacie temu nie zapisuje tak jak trzeba. Ustaw typ pola na timestamp i zobacz jak będzie wtedy.


--------------------
Go to the top of the page
+Quote Post
everth
post 21.08.2010, 20:53:24
Post #9





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


@vokiel raczej nie w typie problem - przecież ma ustawiony DATE, Mysql chyba dopuszcza tylko format YYYY-MM-DD.

A jakąś wartość przyjmuje zmienna $date? daj var_dump($date) przed $zapis = 'Insert...'


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
Darkstorm
post 21.08.2010, 20:59:46
Post #10





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2010

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


napisałem w pierwszym poście że typ danych dla pola "data" to date. zmiana na timestamp nie pomogła.

o jakie konkretnie ustawienia bazy pytasz?

dopisałem sobie echo, żeby sprawdzić typ danych dla zmiennej $data:
  1. echo "typ danych: ".gettype($data);


i w efekcie dostałem info:
  1. typ danych: string


to samo dla $time i wniosek jest taki, że zarówno $data jak i $time to string. $time dodaje się prawidłowo ( $time - pole w bazie typ TIME) a $data nie ($data data typ DATE/ TIMESTAMP - tutaj dla obu typów nie działa ptrawidłowo)


///edit
wciskam na kalendarzu datę 25 sierpnia 2010 roku a var_dump wyrzuca mi na ekran: string(10) "2010-08-25"

//edit2
zrobiłem restart localhosta i okazuje się że var_dump wyświetla mi bool(false). co ciekawe gdy wpisze do formularza niepełne dane - $data to string, gdy wypełnię cały - już ginie...

///edit3
użyłem najgroźniejszej broni - logicznego myślenia. skoro w else $data magicznie znikała (sam nie wiem dlaczego) ponownie pobrałem ją z formularza. dzięki temu udało się i zapis do bazy danych wykonuje się poprawnie. wszystko działa jak należy smile.gif

dzięki wszystkim za zainteresowanie się moim problemem i za wskazówke z var_dump'em. dzięki temu udało się ustalić gdzie zmienna $data gubi swoją wartość.

dla porządku - taka wersja działa:

  1. else {
  2. $data = $_POST['data'];
  3. //var_dump($data);
  4. mysql_query('SET NAMES utf8');
  5. $zapis = "INSERT INTO seans(id_filmu,data,czas,sala) VALUES ('$film', '$data','$time','$sala' );";
  6. $wykonaj = mysql_query($zapis) or die("Zapytanie do bazy nie powiodło się. " . mysql_error());
  7. echo "Dane zostały zapisane!<br />";
  8. }


Ten post edytował Darkstorm 21.08.2010, 21:46:55
Go to the top of the page
+Quote Post
everth
post 21.08.2010, 22:43:25
Post #11





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


@DarkStorm: tam to stoi jak byk tylko nie rzuca się w oczy - zobacz:
Twoje:
  1. if ($film == "" || $data="" ||$time == "" || $sala == "") {

A teraz
  1. if ($film == "" || $data=="" ||$time == "" || $sala == "") {

Głupi błąd a jednak się zdarza.

Ten post edytował everth 21.08.2010, 22:43:44


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
Darkstorm
post 22.08.2010, 09:15:07
Post #12





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2010

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


o kurde... rzeczywiście. jak ja tego nie zauważyłem to nie mam pojęcia blinksmiley.gif

widocznie zmęczenie materiału dało się we znaki bo takie niedopatrzenia raczej mi się nie zdarzają. dzięki za spostrzegawczość. chyba zrobię dzień przerwy bo zamiast iść do przodu to zacinam się na głupich błędach
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.05.2025 - 07:47