Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Sprawdzanie czy pole z datą jest puste
Czapla
post
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


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'] (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Czapla 3.09.2008, 12:33:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
barthpl
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

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


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ę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) To bym poleciał jak faktycznie jeśli chcesz sprawdzić bardzo dokładnie tę datę.

Ten post edytował barthpl 3.09.2008, 11:56:18
Go to the top of the page
+Quote Post

Posty w temacie


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: 6.10.2025 - 10:05