Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> obsluga formularza pole daty rok/miesiac/dzien, kłopot z wykonaniem......
ppsi
post
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 16.07.2005

Ostrzeżenie: (10%)
X----


Witam mam taki maly problem z ustawienie warunku w polach daty .Data sklada sie z 3 pol . rok/miesiac/dzien . Miesiac jest zrobiony ze mozna wybrac z listy. Zrobilem rowniez warunek ze w polach rok i dzien nie mozna wpisywac liter. Tak wyglada KOD ktory nie dokonca dziala poprawnie :
  1. <? 
  2. if (  (empty($_POST['rok'])) || $_POST['miesiac']=="---------------" || (empty($_POST['dzien']))  ) 
  3. { 
  4. echo " Musisz wypelnic wszystkie pola daty urodzenia:<br> 19<input type="text" name="rok" value="$rok" size="2" maxlength="2"> <select name="miesiac"> <option selected value="---------------"> $miesiac <option value="styczen"> styczen <option value="luty"> luty <option value="marzec"> marzec <option value="kwiecien"> kwiecień <option value="maj"> maj <option value="czerwiec"> czerwiec <option value="lipiec"> lipiec <option value="sierpień"> sierpień <option value="wrzesien"> wrzesien <option value="padziernik"> pazdziernik <option value="listopad"> listopad <option value="grudzien"> grudzień</select>  <input type="text" name="dzien" value="$dzien" size="2" maxlength="2"> * pole wymagane<br>"; 
  5. }
  6. else  { 
  7. if(eregi("[A-Z][a-z]",$rok) || eregi("[A-Z][a-z]",$dzien)  ) 
  8. { 
  9. echo "Nie poprawnie podana data: <br> 19<input type="text" name="rok" value="$rok" size="2" maxlength="2"> <select name="miesiac"> <option selected value="---------------"> $miesiac <option value="styczen"> styczen <option value="luty"> luty <option value="marzec"> marzec <option value="kwiecien"> kwiecień <option value="maj"> maj <option value="czerwiec"> czerwiec <option value="lipiec"> lipiec <option value="sierpień"> sierpień <option value="wrzesien"> wrzesien <option value="padziernik"> pazdziernik <option value="listopad"> listopad <option value="grudzien"> grudzień</select>  <input type="text" name="dzien" value="$dzien" size="2" maxlength="2"> <FONT COLOR=red>Data nie moze zawierac liter</FONT><br>"; 
  10. } 
  11. else 
  12. { 
  13. echo "Podałes date urodzenia: <br> 19<input type="text" name="rok" value="$rok" size="2" maxlength="2" > <select name="miesiac"> <option selected value="---------------"> $miesiac <option value="styczen"> styczen <option value="luty"> luty <option value="marzec"> marzec <option value="kwiecien"> kwiecień <option value="maj"> maj <option value="czerwiec"> czerwiec <option value="lipiec"> lipiec <option value="sierpień"> sierpień <option value="wrzesien"> wrzesien <option value="padziernik"> pazdziernik <option value="listopad"> listopad <option value="grudzien"> grudzień</select>  <input type="text" name="dzien" value="$dzien" size="2" maxlength="2"> <br> "; 
  14. } 
  15. } 
  16. ?>

Opis problemu:
Data sklada sie z 3 pol. ROK - MIESIAC - DZIEN . wszystki pola znajduja sie w jednej linice. Pole ROK posiada funkcje ze jesli wprowadzone zostana litery to wyskoczy inofrmacja ze nie wpolna wpisywac liter w te pole.MIESIAC to pole wyboru gdzie uzytkownik moze wybrac z listy dany miesiac. Oraz pole DZIEN gdzie uzytkownik wpisuje dzien i do tego pola jest podlaczona funkcja ktora nie umozliwia wspiwania litere w te pole. Wszystki pola sa wymagane czyli jesli ktos nie poda ROKu lub DNIA lub nie wybieze z listy miesiac obok tych pol po prawej stronie wyswietli sie komuunikat "prosze podac cala date urodzenia". Dziwnie to dzial troche poniewaz nie sa zadobrze zrobione warunki moze jest inne lepsze rozwianie tego problemu? Wiec jest tak uzytkownik wpsuje rok i wybiera miesiac a dni np zapomina. Robi wyslij i wyskauje info ze ma podac jeszcze dzien.Wpisuje dzien riobi wyslij a miesiac autmatycznie sie ustawia na pole nie wybrane i trzeba znowu je wybrac (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) LUB drugi aspekt uzytkownik w pole rok wpisuje litery wybiera miesiac i w dni wpisuje litery robi wyslij i wysykuje info ze w polach daty nie maga byc litery ,wiec poprawia na liczby robi wyslij a miesiac kotry byl wybrany sie restartuj i trzba go wybrac ponownie . To jest problem mojego wlasnie formularza.Ma ktos pomysl jak to wykonac? Prosze bardzo o pomoc bo jak nie TU to gdzie?Jak nie wy to KTO? pomoze mi to rozwiac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pozdrowka papaptki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zrób jedno pole, które bedzie pobieralo dane np. w formacie YYYY-mm-dd

funkcja walidujaca:
  1. <?php
  2.  
  3. function validDate($date)
  4. {
  5. $da = explode('-', $date);
  6. if (count($da) != 3)
  7.  return false;
  8.  
  9. if (strlen($da[0]) != 4 || !is_numeric($da[0]))
  10. return false;
  11.  
  12. if (strlen($da[1]) != 2 || !is_numeric($da[1]))
  13. return false;
  14. if (strlen($da[2]) != 2 || !is_numeric($da[2]))
  15. return false;
  16. return true;
  17. }
  18.  
  19. ?>
prosta, taka, moze mozna szybciej, mozna mozna lepiej.

test:
  1. <?php
  2.  
  3. if (validDate('200o-09-18'))
  4.  echo 'ok';
  5. else 
  6.  echo 'nieok';
  7.  
  8. ?>


Pozniej bedziesz mogl dodac jakis kalendarzyk obok pola, aby ludek z niego wybral se cos, ale to juz inna bajka
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: 15.09.2025 - 00:36