Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] eregi i data?
Forum PHP.pl > Forum > Przedszkole
Mayka
Chciałem ograniczyć wpisywanie daty w formularz do postaci dd-mm-rrrr
i wymysliłem
  1. <?php
  2. if (!eregi('^[0-3][0-9]+-[0-1][0-9]+-[2000-2020]+$', $a))
  3. ?>

ale cos chyba jest nie tak bo zawsze zwraca wartosc true a ja niewiem dlaczego ?
Ew. jak zablokowac inaczej ?
Pilsener
1. Eregi nie jest już zalecane, to raz
2. Dwa - najlepiej pozwolić użytkownikowi wpisać datę w formacie typu dd mm rrrr (najczęściej spotykany) zarówno w postaci 01 02 2009 jak i 2/3/2007:
  1. <?php
  2. function waliduj_data($date,$czypusty=0){
  3.   if(!empty($date)){
  4.      $tdate = split('[^0-9]',$date);
  5.      if(checkdate((int)$tdate[1],(int)$tdate[0],(int)$tdate[2])){
  6.         $data = mktime(0,0,0,$tdate[1],$tdate[0],$tdate[2]);
  7.      }else{
  8.         $error = 'niepoprawna data';
  9.      }
  10.   }else{
  11.      if($czypusty==1){$error = 'wpisz datę';}
  12.   }
  13.   $tablica[1] = $data;
  14.   $tablica[2] = ' value="'.$date.'"';
  15.   if(empty($error)){
  16.      $tablica[0] = TRUE;
  17.   }else{
  18.      $tablica[0] = FALSE;
  19.      $tablica[3] = $error;
  20.   }
  21.   return $tablica;
  22. }
  23. ?>
- kiedyś napisałem taką funkcję do walidacji daty. Zwraca tablicę, która zawiera:
0 - TRUE albo FALSE - w zależności od tego, czy data jest ok czy nie
1 - UNIKSOWY znacznik czasu jeśli data jest poprawna, lub wpisana wartość, jeśli nie jest poprawna (jak ktoś wpisze 'ble' to funkcja zwróci 'ble', a jak 1 1 2007 to 1167606000)
2 - value - żeby jakiś formularz mógł zapamiętać wpisane dane
3 - komunikat błędu (jeśli takowy jest)
Mayka
Mnie wlasnie chodzi o to zeby zablokowac możliwosc wpisywania czegokolwiek innego i bylo tylko w formacie dd-mm-rrrr i zadna inna.I jesli uzytkownik nie wprowadzi daty nie robilo nic ale jesli juz wpisze byly tylko cyferki i to w formacie daty.
zegarek84
  1. <?php
  2. function spr_dat($data){
  3. if(preg_match('/^d{2}-d{2}-d{4}$/', $data)) {list($dzien,$miesiac,$rok)=explode('-',$data);
  4. return checkdate( $miesiac, $dzien, $rok );}else{return false;};}
  5.  
  6.  
  7. $text='11-12-2006';
  8. if(spr_dat($text)){echo 'rób co tam chcesz ;)';}
  9. ?>
erix
Możesz jeszcze dodać sprawdzanie po stronie klienta: http://forum.php.pl/index.php?showtopic=55066

Wstaw zamiast isNaN sprawdzanie wstawianego znaku.
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.