![]() |
![]() |
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 10:11 |