![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 1.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cześć
Chcę u siebie na stronie wyświetlić datę z formacie DD.MM.RRRR. W bazie, w polu 'wydanie' (typ: date), jest w formacie RRRR-MM-DD. Gdy chce go sformatowac zwykłą fukncją date, czyli tak: pojawia się data 01.01.1970. Znalazłem funkcję strtotime, i tak jej użyłem: . I niby wszystko OK, ale gdy zedytuje wpis, w którym jest data, wszystko wariuje. Z roku 2006 robi się 2022, a daty 1984-00-00 31-11-1983. Co robić? |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
a $rekord["wydanie"] w jakim jest formacie?
nie wiem czy to literowka, ale:date("d.m.Y"$rekord["wydanie"]) powinno byc (mam na mysli skladnie): date("d.m.Y",$rekord["wydanie"]) edit: wycofuje pierwsze pytanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) edit2: co rozumiesz przez "zedytuje"? gdzie to edytujesz? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 28.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
W bazie trzymasz w postaci Y-m-d a na sajcie wyswietlasz w d-m-Y zeby poprawnie zapisac zmodyfikowana date musisz ja znowu odwrocic
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 1.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
zedytuje, np. w phpmyadmine (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
z ta literowka to faktycznie, dalem przecinka, ale to dlatego, ze szybko pisalem. @Adiasz: jak odwrocic? zapisane w bazie? no tego wole nie robic, na wpisie w takim wlasnie formacie opieram sortowanie. Ten post edytował spit 17.07.2006, 14:33:35 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 28.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Chodzilo mi o to ze jezeli w bazie masz format daty Y-m-d to nie mozesz go prubowac zpisywac w formacie d-m-Y bo mozesz dostac dziwne rezultaty jak powyzej i przed zapisem do bazy trzeba Y z d zamienic. Twoje bledy moga wynikac z tego blednego formatu.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 1.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ale to format pola 'date', nie moge go zmieniac jak chce.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Znalazłem funkcję strtotime, i tak jej użyłem: . To dziwne rzeczywiscie @Adiasz -> popatrz na to z innej strony w $rekord['wydanie'] przechowywana jest data 2006 7 16 pozniej skrypt zamienia ja na timestamp " strtotime($rekord["wydanie"]) ", na koncu zas zamienia timestamp na 16 7 2006, wiec teoretycznie wszystko powinno byc w porzadku. Nie wiem dlaczego to nie chce dzialac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Moze sprobuj poprostu pole z data ustawic na int13 i zapisywac timestamp zamiast stringowej daty. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Mimo wszystko jak dla mnie wszystko wskazuje na jakis blad przy edycji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Albo strtotime zle zamienia na timestamp. Sprawdz czy skrypt dobrze zamienia timestamp (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pobierz z bazy zamien na timestamp pozniej zamien timestamp spowrotem na format z bazy i zobacz czy jest taka sama data. Pozniej edytuj pole i zrob to samo. Wyciagnij wnioski itp itp (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował thornag 17.07.2006, 17:14:10 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 1.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dla mnie to ewidentna wina edycji, tyle że co, phpmyadmin robi błędy? Nie sądze. Dlaczego tak mówie? Gdy normalnie dodaje rekord, wpisuje date (2005-10-12), jest wyświetlana dobrze (12.10.2005), a gdy ten rekord zedytuje (powiedzmy zmienie zawartość pola 'utwory') data zmienia się na jakąś kosmiczną np. z rokiem 2021. Spróbuje się jeszcze pobawić timestampem.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Po edycji przez phpMyAdmin, probowales sprawdzic czy rekord ma prawidlowa date ?
Zedytuj rekord i w phpmyadmin sprawdz czy data jest nadal dobra, jesli nie to znaczy ze to definitywnie wina edycji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Off.. Coz za szerlokowa konkluzja (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 1.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Data oczywiście jest poprawna po edycji. Tylko wyświetlana jest źle.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Tak jak mowilem, ja bym zapisywal w bazie danych timestampy, no ale nie o to chodzi...
Jeszcze jedno pytanie mam. Czy po pobraniu rekordu (edytowanego) jak wyswietlasz date bez zadnych zmian jak strtotime date to jest ona poprawa? Jak wyszlo testowanie z timestampami, takie same ? |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 1.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
A więc doszedłem do tego, iż błędna data wyświetla się tylko wtedy, gdy w dniu lub miesiącu są dwa zera, np. 1994-00-00. Podaje tak wtedy, gdy nie znam dokładnej daty. Nie mogę wstawić XX-XX, a błędnej daty podawać nie chce. Co radzicie?
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
No raczej zadna funkcja nie jest przygotowana na zerowy dzien i miesiac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Chyba musisz zrezygnowac z takiego zapisu daty. W ogole dziwie sie ze sie MySQL nie pluje o taki typ zapisanej daty.
Ten post edytował thornag 20.07.2006, 11:48:51 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 1.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Więc jeżeli nie date, to co? Zależy mi właśnie na tym, by data była w formacie YYYY-MM-DD, i dała się przerabiać, gdyż używam jej w dwóch przypadkach (sortowanie i wyświetlanie informacji).
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
DLatego najlepszy moim zdaniem jest time stamp. Ustaw pole jako int 13 i zapisuj timestamp do bazy. Szybsze sortowanie a i zrobic z nim mozesz co dusza zapragnie za pomoca funkcji date();
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 1 Dołączył: 30.06.2006 Skąd: okolice Warszawy Ostrzeżenie: (0%) ![]() ![]() |
Ja u siebie zamiasta pola date zrobiłem pole int i wstawiam tam datę, w takim formacie jak chce
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 1.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
DLatego najlepszy moim zdaniem jest time stamp. Ustaw pole jako int 13 i zapisuj timestamp do bazy. Szybsze sortowanie a i zrobic z nim mozesz co dusza zapragnie za pomoca funkcji date(); Tak, tylko jak przekonwertować pole Date na Int? Prz konwersji wszystkie wartości w tym polu się zerują (0000-00-00). Szukanie grubo ponad 300 dat mi się nie usmiecha (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Utworz tymczasowa tabele z indeksem i czasem z tabeli pierwszej. Potem SELECT przekonwertuj wszio, wrzuc do tymczasowej. Pozneij zmien typ i powrzucaj ponownie.
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 1.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
No ok, ale gdybym chciał dać zamiast dnia czy miesiąca wartość XX, to funkcja 'date' się odzywa, że nie da rady. Da rade to obejść?
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Mozesz wstawiac tam zero np, a pozniej jak zamieniasz to funkcja date() wyrzuci Ci defaultowa date unixowa. MOzesz wtedy to sprawdzic strcompare albo czyms i jesli jest defaultowa to olac jesli inna to wyswietlac. Wszystko zalezy od tego do czego Ci potrzebna ta data w formacie XX
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 05:23 |