Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP + MYSQL Porównywanie Daty
Reptile ReX
post
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.01.2008

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


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ć?

Ten post edytował Reptile ReX 5.11.2010, 16:05:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


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. }
Go to the top of the page
+Quote Post
kiler129
post
Post #3





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


...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


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
AndyPSV
post
Post #4





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


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)


Ten post edytował AndyPSV 6.11.2010, 04:47:45
Go to the top of the page
+Quote Post
drakos
post
Post #5





Grupa: Zarejestrowani
Postów: 25
Pomógł: 1
Dołączył: 28.10.2010

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


  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
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 - 06:08