Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Usuwanie rekordów względem daty
!*!
post
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


pole data_wyslania
Kod
Typ       Null    Domyślnie
timestamp  Nie    CURRENT_TIMESTAMP


Chciałbym sprawdzić czy któryś z dodanych rekordów ma więcej niż 6 dni...

  1. <?php
  2. $time2=time();
  3. $sprtime=$time2-518400; // 518400 = 6 dni
  4.  
  5. $zzapytanie = "UPDATE `mail` SET `stan` = '2' WHERE `data_wyslania` < '$sprtime'";
  6. $zidzapytania = mysql_query($zzapytanie);
  7. ?>


Jednak taka opcja nie działa. I pytanie czy przy WIĘKSZEJ ilości rekordów lepiej jest sprawdzać w takiej formie czy lda wybrenego usera?
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. UPDATE nail SET stan = 2 WHERE datediff( current_date, data_wyslania ) > 6
Go to the top of the page
+Quote Post
vokiel
post
Post #3





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


zainteresuj się funkcjami w php: strtotime
albo w mysql TO_DAYS i FROM_DAYS date-and-time-functions
Go to the top of the page
+Quote Post
!*!
post
Post #4





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


emm chwila, bo teraz się już z tym zakręciłem, zapisuję datę do bazy w takiej formie:

  1. <?php
  2. $data_wyslania = date("Y:m:d H:i:s");
  3. ?>


czyli daje to:

Kod
2008-07-15 19:06:25


Następnie wyciagam i zmieniam na czas unixowy

  1. <?php
  2. $wiersz123 = mysql_fetch_assoc($quer);
  3.  
  4. $datazbazy123 = $wiersz123['data_wyslania'];
  5. $staradata123 = strtotime("$datazbazy123");
  6. ?>


ale jak mam to połaczyć?
  1. <?php $sprtime=$staradata123-518400; // 518400 = 6 dni
  2.  
  3.  
  4.  
  5. $zzapytanie2 = "UPDATE `mail` SET `stan` = '1' WHERE `data_wyslania` > '$sprtime'";
  6. $zidzapytania2 = mysql_query($zzapytanie2);
  7. ?>


Ten post edytował !*! 26.08.2008, 13:50:21
Go to the top of the page
+Quote Post
vokiel
post
Post #5





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Niepotrzebnie do tego 2 zapytania.
  1. UPDATE `mail` SET `stan` = '1' WHERE FROM_DAYS((TO_DAYS(`data_wyslania`) + 6)) > DATE_FORMAT( now( ) , '%Y-%m-%d' );

lub
  1. <?php
  2. $to = date("Y-m-d H:i:s", strtotime("+6 day"));
  3. $query = "UPDATE `mail` SET `stan` = '1' WHERE `data_wyslania`< '".$to."';";
  4. ?>
Go to the top of the page
+Quote Post
!*!
post
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


  1. <?php
  2. $to = date("Y-m-d H:i:s", strtotime("+6 day"));
  3. $lecido = "UPDATE `mail` SET `stan` = '1' WHERE `data_wyslania`< '".$to."';";
  4. $idzdo = mysql_query($lecido);
  5. ?>


Zmienia wszytkie pola stan jakie tylko są, całkowicie ignoruje "data_wyslania"
Go to the top of the page
+Quote Post
Kicok
post
Post #7





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


  1. <?php
  2.  
  3. $to = date( "Y-m-d H:i:s", strtotime( "+6 day" ) );
  4. echo 'Pobierz wszystkie rekordy starsze niż: ' . $to;
  5.  
  6. ?>


Na pewno o tą datę ci chodziło? Śmiem wątpić:)
Go to the top of the page
+Quote Post
!*!
post
Post #8





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Tak, w takiej formie jest zapisywana do bazy.
Go to the top of the page
+Quote Post
Kicok
post
Post #9





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Nie chodzi mi o formę, tylko o datę. Przypatrz się jeszcze raz - co widzisz? Wrzesień.
Pobierasz daty starsze niż '1 września 2008', a w twojej bazie wszystkie rekordy spełniają ten warunek.
Go to the top of the page
+Quote Post
vokiel
post
Post #10





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


No przecież minus nie plus:
  1. <?php
  2. $to = date("Y-m-d H:i:s", strtotime("-6 day"));
  3. $lecido = "UPDATE `mail` SET `stan` = '1' WHERE `data_wyslania`< '".$to."';";
  4. $idzdo = mysql_query($lecido);
  5. ?>
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 08:02