Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Spradzanie czy minelo 7 dni od daty w formacie date("d/m/Y")
Forum PHP.pl > Forum > Przedszkole
Gość_Mikolaj_*
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
Qvazar
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ść_Mikolaj_*
Aha...No wyglada fajnie. Chyba zrobie w ten sposob.

Wielkie dzieki!!

Ps. ma ktos inny pomysl?
Gość
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ść
no dziala smile.gif dziwi mnie to, ale dziala smile.gif dzieki
Qvazar
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ść_Mikolaj_*
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ść_Mikolaj_*
Zauważyłem.... No ale to nie zmienia faktu, że nieto porównanie nie działa....
nospor
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
barF
niewiem jak w innych bazach ale w mysql jest cos takiego jak DATEDIFF
Gość_Mikolaj_*
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ść
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ść_Mikolaj_*
Rozwiazanie goscia powyzej działa tak jak trzeba... smile.gif Chociaz nie wiem czy jest " poprawne" i "zgodnie ze światowymi konwencjami" smile.gif
Qvazar
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ść_Mikolaj_*
Dzieki dzieki....


A wie ktoś może czy dałoby się to zrobić na poziomie zapytania SQL questionmark.gif I jak??
Gość_Mikolaj_*
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....
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.