Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Data w MySQL wyświetla 0000-00-00
Forum PHP.pl > Forum > PHP
stanley4043
Witam serdecznie, bardzo proszę o pomoc bo nie mogę sobie poradzić z jedną rzeczą. Otóż problem jest taki że podczas przesyłania daty przez skrypt php do bazy danych wyświetlają one mi się w bazie jako 0000-00-00. Najbardziej mnie dziwi to że przy formacie kolumny data typu "date" to powinienem ją przesyłać w formacie YYYY-MM-DD, no i tak ją przesyłam. Niestety w bazie jest już coś innego. Nie wiem czy to ważne, ale używam datepickera i on wyświetla mi datę w postaci DD.MM.YYYY. Poniżej pokaże kod którym konwertuje datę na tą pożądaną przez MySQL, czyli format YYYY-MM-DD

  1. $dzien_w_pom = explode(".",$_POST['dzien_w']); //pobierana data z formularza i od razu dzielona na tablice
  2. $dzien = $dzien_w_pom[0];
  3. $mies = $dzien_w_pom[1]; //Not tutaj przypisuje sobie do zmiennych elementy tablicy
  4. $rok = $dzien_w_pom[2];
  5. $date = $rok.'-'.$mies.'-'.$dzien; //tutaj oczywiście łączenie w celu osiągnięcia formatu YYYY-MM-DD


Specjalnie echem wyświetlałem date od razu przed zapytaniem poniżej którym wysyłam dane do bazy, no i na ekranie odpowiednia data się wyświetla w formacie YYYY-MM-DD zaznaczę że wszystkie inne dane zostają dobrze przesłane.

  1. $dodaj_pracownika = "INSERT INTO wizyty (miejsce_w, nr_pokoju, dzien_w, godz_od, minuta_od, godz_do, minuta_do,id_p) VALUES ('$miejsce_w','$pokoj','$date','$godz_od','$minuta_od','$godz_do','$minuta_do','$id_p')";
  2. $wprowadz = mysqli_query($conn,$dodaj_pracownika);


Dodam iż szukałem odpowiedzi w Internecie, niestety wszystko sprowadza się do tego że znalazłem tylko porady że musi być to zmienna w postaci YYYY-MM-DD, co niestety tutaj na nic się zdaję bo ową już dawno mam, jeśli jest na tym forum rozwiązanie tego problemu i ktoś może wie gdzie, bardzo proszę o przesłanie liku, bo niestety ja nie mogę takiego tematu znaleźć
sazian
pokaż echo $dodaj_pracownika;
stanley4043
Dziękuję za odpowiedz. Proszę, to jest to co wyświetliło echo:
  1. INSERT INTO wizyty (miejsce_w, nr_pokoju, dzien_w, godz_od, minuta_od, godz_do, minuta_do,id_p) VALUES ('3','','2016-04-14','07','00','07','15','29')
sazian
dziwne powinno działać,
pokaż jeszcze strukturę bazy.

Sprawdź czy to zadziała
  1. CREATE TABLE test
  2. (
  3. id INT AUTO_INCREMENT PRIMARY KEY,
  4. dzien DATE
  5. );
  6. INSERT INTO test VALUES (NULL,'2016-04-14');
  7. SELECT * FROM test
  8.  
stanley4043
Ok to tak, teraz mi to działa. Szczerze to pojęcia nie mam jakim cudem, jak nic nie zmieniałem w pliku php, jedynie to kilka razy zmieniłem typ w bazie z date na varchar i później z powrotem i tak chyba z 2 razy bo myślałem że może coś źle tam zrobiłem, jakimś cudem teraz działa. Temat raczej do zamknięcia, choć jeśli ktoś miałby jakiś pomysł jaki jest tego powód że bez żadnej ingerencji w plik php a tylko przy zmianach typu w bazie kilka razy to 'samo' się naprawiło, czy przyczyną może być jakiś zawias Apache czy MySQL. Korzystam z XXAMP, gdyby co.
sazian
tak swoją drogą to tego potworka na przerabianie daty mógłbyś zmienić
  1. if(($d=strtotime($_POST['dzien_w']))!==false)
  2. {
  3. $date = date("Y-m-d",$d);
  4.  
  5. }
stanley4043
Cytat(sazian @ 9.04.2016, 19:49:07 ) *
tak swoją drogą to tego potworka na przerabianie daty mógłbyś zmienić
  1. if(($d=strtotime($_POST['dzien_w']))!==false)
  2. {
  3. $date = date("Y-m-d",$d);
  4.  
  5. }


Kurcze no wiem, miałem to napisać w jednej linijce nawet tylko już tak rozmyślałem nad tą datą że zrobiłem to tak topornie jak zauważyłeś. Btw fajna sprawa z tym strtotime, dziekuję wink.gif
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.