Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: obsluga formularza pole daty rok/miesiac/dzien
Forum PHP.pl > Forum > Przedszkole
ppsi
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 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 smile.gif pozdrowka papaptki
Pigula
jak ktos ci poda dane to przechowujesz je w zmiennych. sprawdzasz bledne odrzucasz poprawne przekazujesz spowrotem do formularz i przy generowaniu wstawiasz pod odpowiednie wartosci w formularzu. miesiace mozesz puscic w petli, najpierw wstawiasz wybrany a potem reszte. nie wiem czy to zrozumialem mniej wiecej bo sie lekko zirytowalem na jednego czlonka mojej rodziny angrysmiley.gif i mam klopot z zebraniem mysli
ppsi
dzieki pigula za odpowiedz. Niestety jestem jeszcze poczatujacy w php i nie mam pojecia jak to zapisc i zrobic z tego kod .Pomoże ktośquestionmark.gif Z gory dziekowka i pozdrowka papaptki
nospor
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
NuLL
  1. <?php
  2.  
  3. function sprawdzDate($data)
  4. {
  5.  list($rok,$miesiac,$dzien)=explode("-",$data);
  6.  return checkdate($rok,$miesiac,$dzien);
  7. }
  8.  
  9. ?>

tongue.gif
nospor
Co dwie głowy to nie jedna smile.gif Tylko po co zaraz ten język, przecież mówiłem że można lepiej i prościej tongue.gif
ppsi
dziekuje bardzo NOSPOR dziala porawnie wszystko i znowu php.forum mnie NIE zawiodło smile.gif "Jak nie tu to gdzie ?Jak nie Wy to kto? Jak nie teraz to kiedy? " smile.gifsmile.gifsmile.gifsmile.gifsmile.gifsmile.gifsmile.gif
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.