Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 1 Dołączył: 9.04.2008 Ostrzeżenie: (0%)
|
Witam wszystkich,
pytanie moje dotyczy pobierania z bazy danych daty. W bazie mysql istnieje kolumna typu Date w formacie 0000-00-00. Pobierając z niej datę i konwertując poprzez date("d-m-Y", strtotime($rekord[4])) dla dat starszych niż 1900-01-01 otrzymuję wynik 1970-01-01. Rozwiązanie przy użyciu mysql DATE_FORMAT nie wchodzi w grę. P.S. Google i wyszukiwarka już sprawdzone, nie znajduję tego co mi jest potrzebne. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 30 Dołączył: 19.02.2011 Skąd: Warszawa Ostrzeżenie: (0%)
|
Na początek - jak sformatować datę:
Datę z bazy danych dostajesz jako string, w formacie YYYY-MM-DD. Wystarczy "poprzestawiać" te kawałki (funkcjami operującymi na stringach) i masz string daty w takim formacie jak chcesz. Co do funkcji daty / czasu w PHP: Przyjrzałem się im i wszędzie tam jest mowa o UNIX timestamp, a więc w przypadku dat sprzed 1970 r. i przetwarzaniu ich tymi funkcjami wręcz oczekuj problemów. Co do Twojej "niechęci" do odejścia od "SELECT * ... ": Jeżeli mysql_fetch_array ciągnie wszystkie kolumny, a do właściwej kolumny "dobierasz się" przez numer w tablicy wynikowej, to: 1. Niepotrzebnie obciążasz serwer b.d. transmisją pełnych rekordów, podczas gdy naprawdę potrzebujesz tylko pewne pola. 2. Program zacznie się "wywalać" w razie zmian w kolejności kolumn. Zawsze jest ryzyko, że ktoś projektujący bazę dostawi nowe pole nie na końcu, tylko przed którąś kolumną, którą chcesz czytać. Aby program dalej chodził, musisz wszędzie pozmieniać numery pól na nowe. Prawda jest taka, że zawsze coś przeoczysz i będziesz czytać z tablicy poprzednie pole (a nie to, które chciałeś). Takie błędy są trudne do identyfikacji. Lekarstwem na to jest: 1. W mysql_fetch_array użyj parametru MYSQL_ASSOC. Wtedy (nawet w wariancie "SELECT * ...") właściwe kolumny ciągniesz "po nazwach", a nie "po numerach". 2. Jawnie podawać listę pól po SELECT. Przecież w kodzie PHP po odczycie danych z bazy i tak operujesz na określonych polach. Skoro w kodzie PHP odwołujesz się do konkretnych pól, to jest logiczne, że nazwy tych pól też powinieneś podać po SELECT. |
|
|
|
derecyori [MySQL][PHP]Pobieranie daty z bazy danych 27.03.2011, 13:03:23
darko Dlaczego konwertujesz format YYYY-MM-DD na d-m-y ?... 27.03.2011, 13:06:14
derecyori [PHP] pobierz, plaintext $wynik = mysql_query ... 27.03.2011, 13:19:09
darko echo date('d-m-Y', strtotime('2011-03-... 27.03.2011, 13:33:48
Valdi_B Nie używaj funkcji strtotime, bo ona daje w wyniku... 27.03.2011, 14:20:35
derecyori Do Darko:
- $rekord[4] zawiera datę, w tym k... 27.03.2011, 14:39:19
derecyori Do Valdi_B:
- co do bazy danych to, że obciążam ... 27.03.2011, 15:51:25
darko Ok zapomnieliśmy o ograniczeniach timestampów, spr... 27.03.2011, 17:09:56
SUICIDE Witam.
Przyłączę się do tematu.
W bazie mam 2 kol... 12.04.2016, 21:44:38
nospor To ze ty w php sobie dodasz 30 dni do daty to chyb... 12.04.2016, 21:46:56
SUICIDE Nie nie. Spokojnie. Dalszej części kodu . Czyli wp... 12.04.2016, 21:55:43
nospor No to kurcze, chlopie,wyrazaj sie precyzyjnie... J... 12.04.2016, 21:58:36
SUICIDE Dobrze będę starał się być bardziej szczegółowy i ... 12.04.2016, 22:02:20
nospor Kurcze.... Ale pokaz caly kod... skad mamy wiedzie... 12.04.2016, 22:03:35
SUICIDE [PHP] pobierz, plaintext $query = "SELECT * F... 12.04.2016, 22:06:00
com http://stackoverflow.com/a/2332688/4450917 nie pro... 12.04.2016, 22:07:47
nospor Pisalem ci juz,ze $data ma teraz postac sekun... 12.04.2016, 22:07:55
com nospor a wcale nie mówię że nie 12.04.2016, 22:22:57
SUICIDE [PHP] pobierz, plaintext $query = "SELECT * F... 13.04.2016, 17:58:58 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 17:16 |