Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jak sprawdzić czy data ur w form jest poprawna
-Gość_tomek-
post 5.05.2006, 16:57:29
Post #1





Goście







mam w formularzu pole do wpisania daty urodzenia w formacie yyyy-mm-dd
jak sprawdzic,że data napisana jest poprawnie? Jakiej należy uzyć funkcji sprawdzającej?
Go to the top of the page
+Quote Post
Kuziu
post 5.05.2006, 17:32:45
Post #2





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


mktime

Zwraca false jesli data jest niepoprawna jednak mozesz sprawdzic daty tylko z okresu podanego pod linkiem


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
piotrekkr
post 5.05.2006, 19:00:38
Post #3





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

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


hmm ale chodzi tylko o tpo zeby byla w poprawnym formacie a nie czy to bedzie 1111-11-11 czy od jakiejs konkretnej daty?? np tylko od 1900-01-01 do terazniejszej daty. bo jesli tylko format to mozna to zrobic taka funkcja
  1. <?php
  2. eregi("^[0-9]{4}-[0-9]{2}-[0-9]{2}$",$data);
  3. ?>


Ten post edytował piotrekkr 5.05.2006, 19:03:36
Go to the top of the page
+Quote Post
-Gość_tomek-
post 5.05.2006, 19:51:59
Post #4





Goście







Cytat(piotrekkr @ 2006-05-05 18:00:38)
hmm ale chodzi tylko o tpo zeby byla w poprawnym formacie a nie czy to bedzie 1111-11-11 czy od jakiejs konkretnej daty?? np tylko od 1900-01-01 do terazniejszej daty. bo jesli tylko format to mozna to zrobic taka funkcja
  1. <?php
  2. eregi("^[0-9]{4}-[0-9]{2}-[0-9]{2}$",$data);
  3. ?>

a można prosic o podpowiedź jak zrobic aby ktoś nie wpisał bezsensownej daty urodzenia np 1423-23-45 tylko żeby to była data zaczynająca się od 1900 roku i żeby oczywiście mogł wpisac max 12 jeśli idzie o miesiąc i max 31 jeśli idzie o dzień tygodnia?
Go to the top of the page
+Quote Post
seaquest
post 5.05.2006, 20:42:50
Post #5





Grupa: Przyjaciele php.pl
Postów: 790
Pomógł: 7
Dołączył: 6.02.2003
Skąd: Polska

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


mkdate" title="Zobacz w manualu php" target="_manual


--------------------
Michał Płachta
Warsztat: Mac OS X Leopard, PostgreSQL, Text Mate, Retrospectiva + SVN
Go to the top of the page
+Quote Post
lenczewski
post 5.05.2006, 21:06:42
Post #6





Grupa: Zarejestrowani
Postów: 159
Pomógł: 1
Dołączył: 31.08.2005

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


  1. <?php
  2. # IS VALID DATA FORMAT, FAB & JEAN LENCZEWSKY, 2003
  3. function ivdf($ANo)
  4. {
  5.  if(ereg('^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$', $ANo) == True)
  6. {
  7. $date = explode('-', $ANo);
  8. if (checkdate($date[1], $date[2], $date[0])) {
  9. return True;
  10. } else {
  11. return False;
  12. }
  13. }
  14.  else
  15. {
  16. return False;
  17. }
  18. }
  19. ?>


--------------------
Go to the top of the page
+Quote Post
piotrekkr
post 5.05.2006, 22:03:38
Post #7





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

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


tak mi sie przypomnialo ze moznaby najprosciej zrobic poprostu pola wyboru daty typou select i wylistowac odpowiednia petla daty miesiace i dni tak zeby ktos nie musial wpisywac tylko wybral sobie z listy smile.gif wtedy nie powinno byc problemu biggrin.gif

a co do tego sposobu napisanego przez lenzcewski to funkcja chkdate() sprawdza date gragorianska czyli jesli ktos wpisze zupelnie bezsensowna date np 0001-01-10 to ona wykaze ze taka data istnieje co nie rozwiazuje problemu zakresu daty np od 1900-01-01 do teraz

hmm mozna by sprobowac czegos takiego jeszcze :
  1. <?php
  2. eregi("^((19[0-9]{2})|(200[0-6]))-((0[1-9])|(1[12]))-(([012][1-9])|(3[01]))$",$data);
  3. ?>


Ten post edytował piotrekkr 5.05.2006, 22:19:06
Go to the top of the page
+Quote Post
-Gość_tomek-
post 6.05.2006, 11:15:40
Post #8





Goście







Cytat(piotrekkr @ 2006-05-05 21:03:38)
hmm mozna by sprobowac czegos takiego jeszcze :
  1. <?php
  2. eregi("^((19[0-9]{2})|(200[0-6]))-((0[1-9])|(1[12]))-(([012][1-9])|(3[01]))$",$data);
  3. ?>

dziękuję ...póki co ten skrypcik wystarczy smile.gif
Go to the top of the page
+Quote Post
-Gość_tomek-
post 6.05.2006, 12:08:02
Post #9





Goście







Cytat(piotrekkr @ 2006-05-05 21:03:38)
  1. <?php
  2. eregi("^((19[0-9]{2})|(200[0-6]))-((0[1-9])|(1[12]))-(([012][1-9])|(3[01]))$",$data);
  3. ?>

ups.... jest problem... skrypt nie dziala prawidlowo wpisuję datę np. 1982-12-12
i niestety informuje mnie , że podano zła datę

function valid_data($data)
{
if (eregi("^((19[0-9]{2})|(200[0-6]))-((0[1-9])|(1[12]))-(([012][1-9])|(3[01]))$",$data))

return true;
else
return false;

}

//---------------------------------------

if (!valid_data($data))
{
html_naglowek("");
echo "<p align=center>Podano nieprawidlowa datę urodzenia. Proszę wrócić i spróbować raz jeszcze</p>";
html_url("rejestracja_form.php", "<p align=center>Powrót do strony rejestracji</P>");
html_stopka();
exit;
}
Go to the top of the page
+Quote Post
piotrekkr
post 6.05.2006, 18:10:10
Post #10





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

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


hmm no coz nie testowalem go zaraz sprawdze co jest nie tak

moze sproboj tak
  1. <?php
  2.  
  3. eregi("^((19[0-9][0-9])|(200[0-6]))-((0[1-9])|(1[12]))-(([012][1-9])|(3[01]))$",$data)
  4.  
  5. ?>


testowalem na takime skrypcie:

  1. <?php
  2.  
  3. $data="2006-13-12";
  4. $ok=eregi("^((19[0-9][0-9])|(200[0-6]))-((0[1-9])|(1[12]))-(([012][1-9])|(3[01]))$",$data);
  5. if($ok) echo "spoko"; else echo "niepoprawne";
  6.  
  7. ?>

i zmienialem tylko daty na rozne poprawne i niepoprawne i u mnnie to dziala smile.gif jakby co to uruchom skrypt na poczatku z funkcja
  1. <?php
  2. error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
  3. ?>
moze wyrzuci blad jakis w wyrazeniu regularnym .

Ten post edytował piotrekkr 6.05.2006, 18:15:09
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 29.05.2025 - 02:47