login  Naam:   Wachtwoord: 
Registreer je!
Scripts > PHP > Snippets > Formulieren class V0.8


Reacties op het script Formulieren class V0.8

Offline  Rens
Gepost op: 22 november 2004 - 18:30
Gouden medaille

Crew algemeen




Hmmz, het voorbeeld knoppie komt er bij mij niet te staan...
Dus voor de zekerheid hier nog maar een keer het voorbeeld-linkje:
http://rensjuh..../index.php

Mzzls,
Rensjuh

Offline  Thomas
Gepost op: 22 november 2004 - 21:31
Moderator



Waar zijn makeSelect en makeRadio ?

Beide methoden zouden een array als parameter kunnen bevatten, met hierin bij makeSelect array-keys voor de values van de options en array-values voor de teksten tussen de <option></option> tags, en bij makeRadio array-keys voor de value's van de radiobuttons en de array-values voor de begeleidende teksten bij de buttons, en ook een parameter voor een default selected option ?

Offline  Rens
Gepost op: 22 november 2004 - 21:41
Gouden medaille

Crew algemeen




De makeSelect en makeRadio komen er aan.
Zoals ik al zei: Hij is in ontwikkeling

Ik ben hem nu verder aan het ontwikkelen (ook voor eigen gebruik) en zal de nieuwere versie zo snel mogelijk hier posten als hij werkt.

Mzzls,
Rensjuh

[edit]
Nieuwere versie, nu zijn er de makeSelect, makeRadio én makeCheckBox aan toegevoegd.
Heel simpel in gebruik 

  1. <?PHP
  2. $sValue = array();
  3. $sValue[0] = "Hallo";
  4. $sValue[1] = "Hoi";
  5. $sValue[2] = "Hai";
  6. $cForm->makeSelect("Select", "select", $sValue);
  7. echo "<BR>";
  8. $cForm->makeRadio("Radio", "radio", $sValue);
  9. echo "<BR>";
  10. $cForm->makeCheckBox("Checkbox", "check", $sValue);
  11. echo "<BR>";
  12. ?>

Offline  DRUNK
Gepost op: 22 november 2004 - 22:52
PHP gevorderde



Een leuk stukje code, maar ik zou niet alle methoden gelijk laten echo'en. Als je een iets groter project hebt waarbij je dit soort dingen toepast worden ook vaak template-engines gebruikt (smarty, templatepower ed.) dat kan dan de boel erg verklooten. Het is ook niet echt de bedoeling van een klasse om alles gelijk te laten zien, verder wel een leuk stukje code.

Offline  Thomas
Gepost op: 23 november 2004 - 13:01
Moderator



Als het script in ontwikkeling is, waarom post je het dan?

Een script moet af en getest zijn, aan (niet-werkende) halfprodukten hebben we niets.

Offline  Rens
Gepost op: 23 november 2004 - 14:41
Gouden medaille

Crew algemeen




Niet echt in zo'n soort ontwikkeling, het is wel af, maar er kunnen nog wel nieuwe dingen bijkomen, net zoals nu met de checkbox, radio butten en de select...

Deze versie van het script is af, en getest én het werkt...

Mzzls,
Rensjuh

Offline  CelestialCelebi
Gepost op: 02 april 2005 - 22:03
PHP gevorderde



Dit is echt een slecht script. Formulieren maak je niet in PHP met een class, maar gewoon in HTML.... Ze in PHP maken is gewoon lui zijn.

Offline  kokx
Gepost op: 01 juni 2006 - 20:11
Onbekend



Ik vind niet dat je dan lui bent. Het is veel handiger om html en php gescheiden te houden. Mischien ben je dan lui ja. Ik heb ook nog 1 puntje op te merken aan de class. Eigenlijk moet je hier functies van maken. Ik vind niet echt dat dit in een class hoort. In een class moet er eigenlijk werk achter de schermen verzet worden. En dat wordt hier niet gedaan.

Offline  Wim
Gepost op: 12 augustus 2007 - 19:22
Crew algemeen



deze is van mij:
  1. <?php
  2. class form
  3. {
  4.  
  5. private $formname = NULL;
  6. public $newobject = NULL;
  7. public $form = NULL;
  8. public $cssClass = '';
  9.  
  10. public function __construct ($formname=NULL, $method='post', $action=NULL, $enctype=false, $target=NULL, $cssClass=NULL)
  11. {
  12. $this->newobject = new formobjects($this);
  13.  
  14. if(empty($formname))
  15. {
  16. $this->formname = 'form'.rand(0,99);
  17. }
  18. else
  19. {
  20. $this->formname = $formname;
  21. }
  22.  
  23. $action = ($action ? ' action="'.$action.'"' : '');
  24. $enctype = ($enctype ? ' enctype="application/x-www-form-urlencoded"' : '');
  25. $target = ($target ? ' target="'.$target.'"' : '');
  26. $cssClass = ($cssClass ? ' class="'.$cssClass.'"' : '');
  27. $this->form = '<form method="'.$method.'" name="'.$this->formname.'"'.$action.$enctype.$target.$cssClass.'>';
  28. }
  29.  
  30. public function setCSSClass ($class)
  31. {
  32. $this->cssClass = $class;
  33. }
  34.  
  35. public function getFormName()
  36. {
  37. return $this->formname;
  38. }
  39.  
  40. public function newline()
  41. {
  42. $this->form .= '<br />'."\r\n";
  43. }
  44.  
  45. public function addToForm ($txt)
  46. {
  47. $this->form .= $txt;
  48. }
  49.  
  50. public function prepare()
  51. {
  52. $this->form .= '</form>';
  53. }
  54.  
  55. public function printForm($return=false)
  56. {
  57. if($return)
  58. {
  59. return $this->form;
  60. }
  61. else
  62. {
  63. echo $this->form;
  64. }
  65. }
  66. }
  67.  
  68.  
  69. class formobjects
  70. {
  71. protected $form;
  72.  
  73. public function __construct($formObject)
  74. {
  75. $this->form = $formObject;
  76. }
  77.  
  78. public function textField ($name, $label=NULL, $value=NULL, $id=NULL, $size=NULL, $maxlenght=NULL, $readonly=false, $disabled=false)
  79. {
  80. $label = ($label ? $label.' ' : '');
  81. $id = ($id ? ' id="'.$id.'"' : '');
  82. $value = ($value ? ' value="'.$value.'"' : '');
  83. $size = ($size ? ' size="'.$size.'"' : '');
  84. $maxlenght = ($maxlenght ? ' maxlenght="'.$maxlenght.'"' : '');
  85. $readonly = ($readonly ? ' readonly="true"' : '');
  86. $disabled = ($disabled ? ' disabled' : '');
  87. $this->form->form .= '<label>'.$label.'<input type="text" name="'.$name.'"'.$value.$id.$size.$maxlenght.$readonly.$disabled.$this->form->class.' /></label>';
  88. }
  89.  
  90. public function fileField ($name, $label=NULL)
  91. {
  92. $label = ($label ? $label.' ' : '');
  93. $this->form->form .= '<label>'.$label.'<input type="file" name="'.$name.'" /></label>';
  94. }
  95.  
  96. public function passwdField ($name, $label=NULL, $value=NULL, $id=NULL, $size=NULL, $maxlenght=NULL, $readonly=false, $disabled=false)
  97. {
  98. $label = ($label ? $label.' ' : '');
  99. $id = ($id ? ' id="'.$id.'"' : '');
  100. $value = ($value ? ' value="'.$value.'"' : '');
  101. $size = ($size ? ' size="'.$size.'"' : '');
  102. $maxlenght = ($maxlenght ? ' maxlenght="'.$maxlenght.'"' : '');
  103. $readonly = ($readonly ? ' readonly="true"' : '');
  104. $disabled = ($disabled ? ' disabled' : '');
  105. $this->form->form .= '<label>'.$label.'<input type="passwd" name="'.$name.'"'.$value.$id.$size.$maxlenght.$readonly.$disabled.$this->form->class.' /></label>';
  106. }
  107.  
  108. public function hiddenField ($name, $value)
  109. {
  110. $this->form->form .= '<input type="hidden" name="'.$name.'" value="'.$value.'" />';
  111. }
  112.  
  113. public function submitButton ($name, $value='Submit', $id=NULL)
  114. {
  115. $id = ($id ? ' id="'.$id.'"' : '');
  116. $this->form->form .= '<input type="submit" name="'.$name.'" value="'.$value.'"'.$id.'>';
  117. }
  118.  
  119. public function textArea ($name, $label=NULL, $value=NULL, $id=NULL, $cols=NULL, $rows=NULL, $wrap=NULL, $readonly=false, $disabled=false)
  120. {
  121. $cols = ($cols ? ' cols="'.$cols.'"' : '');
  122. $rows = ($rows ? ' rows="'.$rows.'"' : '');
  123. $id = ($id ? ' id="'.$id.'"' : '');
  124. $label = ($label ? $label.': ' : '');
  125. $readonly = ($readonly ? ' readonly="true"' : '');
  126. $disabled = ($disabled ? ' disabled' : '');
  127. $wrap = (!$wrap ? ' wrap="off"' : ' wrap="'.$wrap.'"');
  128. $label = ($label ? $label.'<br />' : '');
  129. $this->form->form .= $label.'<textarea name="'.$name.'"'.$cols.$rows.$id.$readonly.$disabled.$wrap.'>'.$value.'</textarea>';
  130. }
  131.  
  132. public function checkbox($name, $value, $label=NULL, $checked=false, $disabled=false)
  133. {
  134. $disabled = ($disabled ? ' disabled' : '');
  135. $checked = ($checked ? ' checked' : '');
  136. $label = ($label ? ' '.$label : '');
  137. $this->form->form .= '<label><input type="checkbox" name="'.$name.'" value="'.$value.'" '.$checked.$disabled.' />'.$label.'</label>';
  138. }
  139.  
  140. public function radiobutten ($name, $value, $label=NULL, $checked=false, $disabled=false)
  141. {
  142. $disabled = ($disabled ? ' disabled' : '');
  143. $checked = ($checked ? ' checked' : '');
  144. $label = ($label ? ' '.$label : '');
  145. $this->form->form .= '<label><input type="radio" name="'.$name.'" value="'.$value.'" '.$checked.$disabled.' />'.$label.'</label>';
  146. }
  147. }
  148. ?>


vb van gebruik:
  1. <?php
  2. require_once('form.class.php');
  3. $form = new form;
  4. $form->newobject->textfield('naam', 'Naam');
  5. $form->newline();
  6. $form->newobject->textfield('voornaam', 'Voornaam');
  7. $form->newline();
  8. $form->newobject->submitbutton('add', 'Toevoegen');
  9. $form->prepare();
  10. $form->printForm();
  11. ?>

Offline  Thomas
Gepost op: 24 maart 2016 - 15:23
Moderator



Ik weet dat dit script al redelijk "vintage" is, maar het idee is nog steeds goed. Je kunt een hele hoop tijd besparen als je een soort van formuliersysteem hebt.

Wat dit systeem echter een beetje mist is het volgende:
- opdeling in verschillende classes, zo zou je bijvoorbeeld een form class kunnen hebben, en een (abstracte) formfield class, waar je weer formulier-elementen ui af kunt leiden
- validatie(regels) voor data, als je dit inbouwt zou dit echt vet zijn, zodat je met deze form class de complete verwerking voor je rekening kunt nemen
- initialisatieroutine voor data, zodat je een formulier kunt hergebruiken voor het wijzigen van gegevens

Formulierelementen hoeven ook niet enkel te bestaan uit een radiobutton of een tekstveld. Dit kunnen ook complexere elementen zijn die zijn opgebouwd uit meerdere elementaire (standaard) formulierelementen. Zo zou je met twee dropdown waartussen je elementen kunt overgooien een "nieuw" formulierelement bouwen.

Een uitwerking van dit concept zie je hier.

Alle code van die en onderliggende pagina's voor het toevoegen en wijzigen van gegevens kun je hier terugvinden. De hoeveelheid code voor het opstellen van dit formulier is vele malen korter dan wanneer je zo'n compleet (en redelijk complex) formulier elke keer opnieuw zou moeten maken. Het werk wat je stopt in het schrijven van zo'n formuliersysteem verdient zich heel snel terug.


Enkel aanvullende informatie, vragen en antwoorden op vragen zijn welkom.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.083s