Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP + MYSQL Porównywanie Daty
Forum PHP.pl > Forum > PHP
Reptile ReX
Witam mam pewne problemy:

Pytanie 1:

Mianowicie chcę uzyskać taki efekt:

Skrypt sprawdza datę zapisaną w bazie MYSQL następnie porównuję ją z datą aktualną.

Ja na chłopski rozum zrobiłem tak:


  1. <?php
  2. $SprawdzanieDaty = mysql_query("SELECT Data FROM tabela WHERE Login='xxxxxx'");
  3. $Date = mysql_fetch_row($SprawdzanieDaty);
  4. $Aktualna = date(d:m:Y);
  5.  
  6. if ($Aktualna < $Date[0]) {
  7.  
  8. //Przechodzi dalej...
  9.  
  10. } else {
  11.  
  12. die("");
  13.  
  14. ?>


Lecz to nie działa prawidłowo bo php porównuję to jak integer.
Bynajmniej tak mi się wydaję.

Pytanie 2:

Chciałbym zrobić panel dodawania do daty mianowicie:

Administrator wybiera ilość miesięcy i nazwę użytkownika.
Skrypt wyciąga z bazy datę podanego użytkownika (która dodała się podczas rejestracji) następnie skrypt dodaję do niej odpowiednią wartość: (0-12 w zależności od wyboru z selecta) * 30 dni

Problem zaczyna się gdy chcę do wyciągniętej już daty dodać odpowiednią ilość dni.

Co powinienem zrobić?
CuteOne
Zmień typ kolumny Data na datetime

  1.  
  2. $date = date("Y-m-d H:i:s");
  3.  
  4. $SprawdzanieDaty = mysql_query("SELECT Data FROM tabela WHERE Login='xxxxxx' AND Data > '{$date}'");
  5.  
  6. if(mysql_num_rows($SprawdzanieDaty)) {
  7.  
  8. $Date = mysql_fetch_row($SprawdzanieDaty);
  9. }
  10. else {
  11.  
  12. die('');
  13. }
kiler129
...a jeśli nie możesz zmienić to przetwórz datę za pomocą explode() i mktime() i porównaj timestampy (tak się zazwyczaj robi).

Cytat
Problem zaczyna się gdy chcę do wyciągniętej już daty dodać odpowiednią ilość dni.

Gdybyś przechowywał datę w MySQLu jako timestamp (np. w polu int o długości 11 znaków) możesz zrobić taki myk:

Kod
UPDATE `users` SET `expiring`=`expiring`+86400 WHERE `id`='1' LIMIT 1

Takie zapytanie zwiększy czas ważności o 86400 sekund czyli 24h. Wtedy wysyłasz tylko z formularza do php ilość sekund o ile chcesz przedłużyć winksmiley.jpg
AndyPSV
musisz przechowywac date jako DATETIME albo DATE

kod,
  1. DELETE FROM `'.PRFX.'u_on` WHERE DATE_ADD(time,INTERVAL 5 MINUTE) < NOW()


przerob sobie go

zapewne ci chodzi o:

  1. DATE_ADD('2010-05-20',INTERVAL 1 MONTH)
drakos
  1. SELECT * FROM tabela WHERE date > CURDATE()

date musi być formatu data/datetime i wszystko śmiga bez PHP.

Co do dodawania dni to polecam obiektową wersję DateTime http://www.php.net/manual/en/class.datetime.php
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.