Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Spradzanie czy minelo 7 dni od daty w formacie date("d/m/Y")
-Gość_Mikolaj_*-
post
Post #1





Goście







Hej mam date utworzenia rekordu. Zapisuję ją w bazie w formacie date("d/m/Y") . I chciałbym teraz mieć możliwość sprawdzania cz juz minelo 7 dni. Wiecie, jezeli data starsza o więcej niż 7 dni niż aktualna to niech nie wyswietla...

Moje pytanie jest takie: jak zrobić takie sprawdzenie? moge to robic na formacie date, czy muszę mieć to zapisane w formie time?

Pozdrawiam i sorki za niefachowe słownictwo smile.gif
Go to the top of the page
+Quote Post
Qvazar
post
Post #2





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 28.10.2005

Ostrzeżenie: (0%)
-----


ja to robię w ten sposób (może jest inny łatwiejszy)

  1. <?php
  2. $teraz=date("d/m/Y");
  3.  
  4. $dane= explode("/",$twoja_data);
  5. $d=$dane[0];
  6. $m=$dane[1];
  7. $y=$dane[2];
  8.  
  9. $date_plus_7= date("Y-m-d",mktime(0,0,0,$m,$d+7,$y));
  10.  
  11. if ($date_plus_7>$teraz) -to nie wyświetlaj
  12. ?>
Go to the top of the page
+Quote Post
-Gość_Mikolaj_*-
post
Post #3





Goście







Aha...No wyglada fajnie. Chyba zrobie w ten sposob.

Wielkie dzieki!!

Ps. ma ktos inny pomysl?
Go to the top of the page
+Quote Post
-Gość-
post
Post #4





Goście







Cytat(Qvazar @ 30.05.2006, 10:07 ) *
  1. <?php
  2.  
  3. if ($date_plus_7>$teraz) -to nie wyświetlaj
  4. ?>


Zastanawia mnie ten kawalek kodu....

No bo data z bazy wyglada np. tak 11/05/2006, więc jak zrobie tak jak mówisz to będzie np:

if 18/05/2006>30/05/2006 to nie wyświetlaj. Pytania: Takie porównanie działa? Skąd wiadomo, że to data a nie jakis string questionmark.gif Można porównywać daty, a nie tylko time??
Go to the top of the page
+Quote Post
-Gość-
post
Post #5





Goście







no dziala smile.gif dziwi mnie to, ale dziala smile.gif dzieki
Go to the top of the page
+Quote Post
Qvazar
post
Post #6





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 28.10.2005

Ostrzeżenie: (0%)
-----


wkradł się mały błąd, ale może to już zauważyłeś

  1. <?php
  2. $date_plus_7= date("d/m/Y",mktime(0,0,0,$m,$d+7,$y)); - chodzi o zapis "d/m/Y" - wczesniej podałem "Y-m-d"
  3. ?>
Go to the top of the page
+Quote Post
-Gość_Mikolaj_*-
post
Post #7





Goście







a jednak chyba nie dziala.....

sad.gif no bo: 03/06/2006>30/05/2006 w tym momencie nie wykonuje polecenia, a ewidentnie pierwsza data jest większa niż druga.....
Go to the top of the page
+Quote Post
-Gość_Mikolaj_*-
post
Post #8





Goście







Zauważyłem.... No ale to nie zmienia faktu, że nieto porównanie nie działa....
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no bo niestety dat nie porównuje sie jako stringi. nie ten tok myslenia. daty porownuje sie jako liczby, czyli w postaci generowanej przez mktime. Teraz juz chyba wiesz jak zmodyfikowac skrypt smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
barF
post
Post #10





Grupa: Zarejestrowani
Postów: 43
Pomógł: 1
Dołączył: 17.01.2006
Skąd: pionowe

Ostrzeżenie: (0%)
-----


niewiem jak w innych bazach ale w mysql jest cos takiego jak DATEDIFF
Go to the top of the page
+Quote Post
-Gość_Mikolaj_*-
post
Post #11





Goście







Czyli moge mieć takie zapytanie do bazy?
  1. SELECT * FROM mojatabela WHERE DATEDIFF('data_dodania','aktualny czas')<7;


No i jak przedstawić ten 'akutalny czas' ? data_dodania jest rekordem w bazie typ varchar....
Go to the top of the page
+Quote Post
-Gość-
post
Post #12





Goście







Ja to czasem robie tak:

$today=date(Ymd);
$date_7= date("Ymd",mktime(0,0,0,$m,$d+7,$y));

teraz $today bedzie mialo wartosc "20060530" a $date_7 - "20060606"
Teraz porownuje jako stringi:
if ("$today"<"$date_7") {
blablabla }
Go to the top of the page
+Quote Post
-Gość_Mikolaj_*-
post
Post #13





Goście







Rozwiazanie goscia powyzej działa tak jak trzeba... smile.gif Chociaz nie wiem czy jest " poprawne" i "zgodnie ze światowymi konwencjami" smile.gif
Go to the top of the page
+Quote Post
Qvazar
post
Post #14





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 28.10.2005

Ostrzeżenie: (0%)
-----


ja się jeszcze porprawie

  1. <?php
  2. $twoja_data="11/05/2006";
  3.  
  4. $dane= explode("/",$twoja_data);
  5. $d=$dane[0];
  6. $m=$dane[1];
  7. $y=$dane[2];
  8.  
  9.  
  10. $teraz= mktime(0,0,0,date("m"),date("d"),date("Y"));
  11. $teraz2= mktime(0,0,0,$m,$d,$y);
  12.  
  13. $oo=$teraz-$teraz2;
  14.  
  15. if (($oo)<604800) {echo "wyświetl";}
  16.  else {echo "nie wyświetlaj";}
  17. ?>


sorki zawcześniejsze zamieszanie
Go to the top of the page
+Quote Post
-Gość_Mikolaj_*-
post
Post #15





Goście







Dzieki dzieki....


A wie ktoś może czy dałoby się to zrobić na poziomie zapytania SQL questionmark.gif I jak??
Go to the top of the page
+Quote Post
-Gość_Mikolaj_*-
post
Post #16





Goście







Odpowiem sobie sam, jakby ktoś był ciekawy rozwiązania:

  1. $result = mysql_query("SELECT * FROM $rodzaj WHERE kid = '$kid' AND DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= dateadded ORDER BY id DESC $limit_str ",$link);


W tabeli jest kolumna dateadded typ DATE gdzie wstawiam date przy tworzeniu rekordu
  1. $query = "INSERT INTO $rodzaj (.........., dateadded) values ( ............, CURDATE());


Działa dobrze, tylko teraz musze wszystkie daty pozmieniać bo sie kaszana zrobiła biggrin.gif

Mam nadzieje ze sie kiedys komus przyda....
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 01:33