![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 293 Pomógł: 4 Dołączył: 28.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam Państwa,
Mam uprzejme zapytanie czy ktoś był by mi w stanie pomóc. Pracuję nad prostym skryptem i potrzebuję dowiedzieć się w jaki sposób mogę działać na datach w PHP. Tak więc pobieram sobie z PHP aktualną datę. $obecna_data = date("Y-m-d H:i"); w związku z czym dostaję coś mniej więcej takiego: $data = "2008-07-25 09:15"; Teraz, chciał bym wykonać zapytanie do serwera MYSQL, i powiedzieć mu że użytkownik zarejestrował subskrypcję poprawnie, a czas jej trwania będzie wynosić przyszłe 30 dni ! W związku z czym utworzyłem na serwerze MYSQL 2 pola, dataaktywacji datadeaktywacji. W dataaktywacji wprowadzam aktualną datę -> $obecna_data = date("Y-m-d H:i"); i w tym momencie wykonania skryptu, chciał bym aby do serwera SQL poszło również zapytanie dodające datę wyłączenia będącą aktualną datą + 30 dni ! Dzięki temu, w późniejszej części programu mógł bym spokojnie odliczać czas w stylu pozostało, tyle i tyle dni do wygaśnięcia subskrypcji. Tak więc Panie i Panowie czy jest możliwość aby do takiej danej: $obecna_data = date("Y-m-d H:i"); wyprzedzić czas i dodać te 30 dni ? Będę bardzo wdzięczny za wszelką pomoc. pozdrawiam -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Hmm - jeśli korzystasz z mysql to lepiej używaj pól integer przechowujących unix_timestamp - wtedy o wiele łatwiej operować na datach jest
![]() pozdr. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował pyro 25.07.2008, 08:57:31 -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
@pyro:
WTF?
moj sposob bardziej jako alias ![]() -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 293 Pomógł: 4 Dołączył: 28.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Dziękuję za odpowiedzi. Spróbowałem z opcją strtotime ale niestety nie jest to pożądane prze zemnie rozwiązanie :/
Na serwerze SQL wylądowały takie dane: Id datazaplaty datawylaczenia 10 2008-07-25 10:03 2680408 Jak widać obydwa formaty się różnią zdecydowanie. W jaki sposób więc miał bym je porównać, plus dodatkowo wykazać w zrozumiałym dla człowieka języku. pozdrawiam -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
seba22, a spróbuj tego co ja ci podałem.
-------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
hehe
![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
nie: $datakoniec=strtotime (("+1 month"), "$obecna_data");
a: $datakoniec=strtotime ("+1 month", strtotime($obecna_data)); -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Kod UPDATE "uzytkownicy" SET "czassubskrypcji" = FROM_UNIXTIME( UNIX_TIMESTAMP() + 30 * 24 * 60 * 60 ) WHERE ... Na przykład tak ![]() pozdr. Łukasz |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 293 Pomógł: 4 Dołączył: 28.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Kurka wodna, muszę przyznać ze sposób użytkownika Pyro działa, i to całkiem sprawnie:
W bazie MySQL wylądowały następujące dane: Id datazaplaty datawylaczenia 10 2008-07-25 10:13 2008-08-24 10:13
Czyli problem A został rozwiązany. Pozostał jeszcze B polegający na odliczaniu czasu. od zmiennej $data_plus_30 -> Oficjalnie, będzie ona pobierana z serwera SQL, no ale możemy 100 % założyć ze jej odebrany format będzie identyczny jak tej zmiennej: $data_plus_30 Znalazłem w sieci na stronie http://webmade.org/porady/data-php.phpnastępujący kod:
Ale zwracane przez niego dane, są że tak powiem trudne w interpretacji. Chciał bym napisać więc powiedzmy 3 proste IF-y. jezeli data + 30 dni minus dzisiejsza data jest wieksza wieksza niz 5 dni - echo wszystko OK jezeli data +30 dni minus dzisiejsza data jest mniejsza niż 5 dni - twoja subskrypcja wygasnie za mniej niz 5 dni, zapisz się ponownie. jezeli data +30 dni minus dzisiejsza data jest mniejsza lub = 0 - twoja subskrypcja została wylaczona i potrzebuję to w IF-ach, bo będę tam wstawiać zapytania do serwera SQL, które dezaktywują subskrypcje. Czy jest jakiś sposób aby powalczyć tak z tymi datami ? -------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat("seba22") Kurka wodna, muszę przyznać ze sposób użytkownika Pyro działa, i to całkiem sprawnie: No ba, chyba nikt nie miał wątpiwości ![]() A co do reszty twojego pytania, no to wystarczą najzwyklejsze w świecie if'y i prosta matematyka. -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 293 Pomógł: 4 Dołączył: 28.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Racja, Thank You kliknięte.
No ale jak twoim zdaniem porównać datę która ma : kropek w środku ? Przecież dobrze wiemy, że to nie liczby standardowe, które możemy odejmować od siebie. Np godziny mają 60 minut, a doba ma 24 godziny, więc nie możemy tego odejmować, zmienna1 0 zmienna2 ? -------------------- |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
ale możesz operować na timestampach, wtedy można normalnie odejmowac
-------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Kurcze chyba jakaś blokada jest na moim koncie, że nie widać co piszę ... chyba wspominałem o timestampach
![]() pozdr. Łukasz |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Cytat("Kocurro") Hmm - jeśli korzystasz z mysql to lepiej używaj pól integer przechowujących unix_timestamp - wtedy o wiele łatwiej operować na datach jest Ale dlaczego się tak upierasz przy tych timestampach? Że niby coś takiego: Kod FROM_UNIXTIME( UNIX_TIMESTAMP() + 30 * 24 * 60 * 60 ) jest czytelniejsze, albo wygodniejsze w napisaniu od:Kod ADDDATE( NOW(), 30 ) albo: Kod NOW() INTERVAL 30 DAY O przechowywaniu daty w polach typu integer nie wspomnę. No chyba że tylko ja mam problemy z odczytywaniem 1234321234 jako 2008-09-23 13:57:04 gdy przeglądam tabelę w phpMyAdminie -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 654 Pomógł: 17 Dołączył: 19.03.2006 Skąd: z kosmosu ;) Ostrzeżenie: (0%) ![]() ![]() |
Ja w datach czasami się gubię, ale dużo miałem przypadków z operacjami na datach i każdy wyszedł poprawnie (wygasanie kont, aktualizacje statystyk itp.)
![]() Mi wystarczy tylko jedno pole w MySQL o typie INT. Wrzucam tam mktime()+$IleSekundDoKonca i sprawdzam czy mktime() jest większe lub równe polu. Dziękuję, Babcia@Stefa -------------------- Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 16:09 |