Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Pobieranie daty z bazy danych
derecyori
post
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.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Valdi_B
post
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.
Go to the top of the page
+Quote Post

Posty w temacie
- 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
- - Valdi_B   Na początek - jak sformatować datę: Datę z bazy da...   27.03.2011, 15:35: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


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

 



RSS Aktualny czas: 10.10.2025 - 10:11