Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> obsluga formularza
skowron-line
post
Post #1





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. <?php
  2.  
  3. class obsluga_formularza {
  4.  
  5. public $nazwa;
  6. public $adres;
  7. private $wzorzec = '/^[a-zA-Z0-9.-_]+@[a-zA-Z0-9-.]+.[a-zA-Z]{2,4}$/';
  8.  
  9.  
  10. function __construct($nazwa, $adres) {
  11.  
  12. $this -> nazwa = $nazwa;
  13. $this -> adres = $adres;
  14.  
  15. }
  16.  
  17. function policz_znaki() {
  18.  
  19. $ile_znakow = strlen($this -> nazwa);
  20. return $ile_znakow;
  21.  
  22. }
  23. function sprawdz_adres() {
  24.  
  25. if(!preg_match($this ->wzorzec, $this -> adres)){
  26. return "bledny adres e-mail";
  27. }else{
  28. return "adres e-mail jest poprawny";
  29. }
  30.  
  31. }
  32. function pokaz() {
  33. return $this -> policz_znaki().
  34. $this -> sprawdz_adres();
  35. }
  36. }
  37.  
  38.  
  39. echo'<form action="" method="post">
  40. nazwa:<input type="text" name="nazwa">
  41. adres:<input type="text" name="adres">
  42. <input type="submit" name="submit">';
  43.  
  44. if(isset($_POST['submit'])){
  45.  
  46. $parm = new obsluga_formularza($_POST['nazwa'], $_POST['adres']);
  47.  
  48. echo $parm -> pokaz();
  49.  
  50. }
  51. ?>


od jakiegos czasu usiluje sie nauczyc programowac obiektowo i napisalem cos takiego.
nie wiem czy jest to napisane poprawnie ale dziala jak ja to sobie zalorzylem.
lecz moje pytanie brzmi czy tak powinno to wyglada czy moze sprawdzanie poprawnosci wpisanych danych powinno byc poza klasa?? moze to zly przyklad ale chodzi mi o to ze jezeli teraz chcialbym sprawdzic czy pola zostaly wypelnione to czy mam to napisac w klasie czy poza nia??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
koala
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 4.03.2005

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


czyli "mowisz" ze formularz tez powinien byc w klasie?? - nie
a walidacja w innej?? - tak

  1. <?php
  2. class textInputComponent implements ioptComponent
  3. {
  4. protected $message = NULL;
  5. protected $tagParameters = array();
  6. protected $tpl;
  7.  
  8. public function __construct()
  9. {
  10. $this -> message = NULL;
  11. } // end __construct();
  12.  
  13. public function setOptInstance(optClass $tpl)
  14. {
  15. $this -> tpl = $tpl;
  16. } // end setOptInstance();
  17.  
  18. public function set($name, $value)
  19. {
  20. switch($name)
  21. {
  22. case 'message':
  23. $this -> message = $value;
  24. break;
  25. default:
  26. $this -> tagParameters[$name] = $value;
  27. }
  28. } // end set();
  29.  
  30. public function push($value, $desc, $selected = false)
  31. {
  32. $this -> set($value, $desc);
  33. } // end push();
  34.  
  35. public function setDatasource(&$source)
  36. {
  37. if(is_array($source))
  38. {
  39. if(isset($source['name']))
  40. {
  41. $this -> tagParameters['name'] = $source['name'];
  42. }
  43. if(isset($source['value']))
  44. {
  45. $this -> tagParameters['value'] = $source['value'];
  46. }
  47. if(isset($source['message']))
  48. {
  49. $this -> message = $source['message'];
  50. }
  51. }
  52. } // end setDatasource();
  53.  
  54. public function begin()
  55. {
  56. return '<input type="text"'.generateTagElementList($this->tagParameters).' />';
  57. } // end begin();
  58.  
  59. public function onmessage($pass_to)
  60. {
  61. if($this -> message == NULL)
  62. {
  63. return 0;
  64. }
  65. $this -> tpl -> vars[$pass_to] = $this -> message;
  66. return 1;
  67. } // end onmessage();
  68.  
  69. public function end()
  70. {
  71. return '';
  72. } // end end();
  73. }
  74. ?>

Ten kod pochodzi z OpenPowerTemplate - plik opt.components.php
input type="text" - jest klasą
input type="select" - jest kolejną klasą
itd. czyli każdy "input" to osobna klasa
a Twoja klasa mogaby się nazywać "Zend_Filter_Input" (zaglądnij do Zend-a). Za pomocą tej klasy możesz sprawdzić czy podany przez użytkownika email to faktycznie email, jeśli pytasz o wiek to czy to co podal użytkownik to napewno jest "int", czy nick ma minimum np. 5 znaków itd.
Czyli wszystko osobno - każdy input = osobna klasa a walidacja w innej.

Gdybyś swój formularz wstawil do do tej swojej klasy to miabyś klasę do obsugi tego konkretnego formularza a do kolejnego musiabyś stworzyć kolejną taką samą klasę która różnilaby się tylko ilością :
input type="?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) " name="?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) "
czyli jeśli w serwisie masz 10 formularzy musisz stworzyć 10 niemalże identycznych klas a tak masz zestaw konkretnych klas (elementów formularzy) i walidację w osobnej i czy w serwisie "XXX" czy "YYY" czy "ZZZ' ciągle korzystasz z tych samych klas nie musząc ciągle tworzyć nowych.
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: 26.12.2025 - 06:07