Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Sprawdzanie czy pole z datą jest puste
Forum PHP.pl > Forum > Przedszkole
Czapla
W jaki sposób za pomocą funkcji php sprawdzić czy pole typu DATETIME jest puste? Zawartość 0000-00-00 00:00:00

Niby is_null() realizuje takie założenie ale nie wiem czy to dotyczy też pól typu DATETIME

Pokaże na przykladzie

  1. <?php
  2. $data_utworzenia = $_REQUEST['data_utworzenia'];
  3.  
  4.   $zapytanie = "REPLACE INTO przy_stat (id_statystyka, statystyka, data_utworzenia, data_modyfikacji, data_wyswietl
    e
  5. ia) VALUES ('";
  6.   $zapytanie .= (int)$ID_STATYSTYKA;
  7.   $zapytanie .= "','";
  8.   $zapytanie .= $statystyka; // liczba wyswietleń
  9.   if (is_null($data_utworzenia)) // is_null?
  10.   {
  11.    $zapytanie .= "',";
  12.    $zapytanie .= "NOW()";
  13.    $zapytanie .= ",";
  14.   }
  15.   else
  16.   {
  17.    $zapytanie .= "','";
  18.    $zapytanie .= $aDBC->FieldByName ('data_utworzenia');
  19.    $zapytanie .= "',";
  20.   }
  21.   $zapytanie .= "NOW()";// data_modyfikacji
  22.   $zapytanie .= ",'";
  23.   $zapytanie .= $aDBC->FieldByName ('data_wyświetlenia'); 
  24.   $zapytanie .= "'";
  25.   $zapytanie .= ")";
  26.   $aDBC->ExecSQL ($SQL); 
  27. ?>


Pozdrawiam

V
OK miałeś racje ja pochrzanilem skrypt [data_wyświetlenia'] smile.gif
skowron-line
np.
Kod
// liczba wyswietleń
  if ($data_utworzenia == '0000-00-00 00:00:00')
barthpl
Wydaje mi się że samo is_null nie wystarczy ponieważ dla:
  1. <?php
  2. $date = '0000-00-00 00:00:00';
  3. echo !is_null( $data ) ? '$date to nie null' : '$date to nie null';
  4. ?>
wynik jest: $date to nie null.

Wydaje mi się, że takie rozwiązanie jest ok:
  1. <?php
  2. function isDateNull( $date )
  3. {
  4. return !preg_match("/([0]{4})-([0]{2})-([0]{2}) ([0]{2}):([0]{2}):([0]{2})/", $date );
  5. /*  Można jeszcze to urozmaicić w następujący sposób:
  6. return !preg_match("/([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})/", $date, $d );
  7. // W tablicy $d znajdą się wszystkie poszczególne elementy. 
  8. // Szięki temu można sprawdzić czy data to przypadkiem nie coś takiego:
  9. // 2008-99-32 45:90:12
  10. // Ale takie sprawdzanie to już kwestia tego skąd pobierasz tę datę.
  11. /*/
  12. }
  13.  
  14. $date[] = '0000-00-00 00:00:00';
  15. $date[] = '2008-01-12 00:00:00';
  16.  
  17. foreach( $date as $d )
  18. if( isDateNull($d) )
  19. echo $d.' is OK';
  20. ?>
jak się łatwo domyślić wynik jest następujący: 2008-01-12 00:00:00 is OK.

edit --> Kolegi wyżej rozwiązanie jest prostsze do zabicia muchy wyciągnąłem armatę, zdarza się winksmiley.jpg To bym poleciał jak faktycznie jeśli chcesz sprawdzić bardzo dokładnie tę datę.
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.