Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Usuwanie rekordów względem daty
Forum PHP.pl > Forum > Przedszkole
!*!
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?
skowron-line
  1. UPDATE nail SET stan = 2 WHERE datediff( current_date, data_wyslania ) > 6
vokiel
zainteresuj się funkcjami w php: strtotime
albo w mysql TO_DAYS i FROM_DAYS date-and-time-functions
!*!
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. ?>
vokiel
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. ?>
!*!
  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"
Kicok
  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ć:)
!*!
Tak, w takiej formie jest zapisywana do bazy.
Kicok
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.
vokiel
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. ?>
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.