Palavra:   

Revista PHP / PHP

Vinícius Belnuovo

Analista de Sistemas. Desenvolvedor web desde 2006, usando tecnologias asp, php e dot net. Banco de dados sql server e mysql.

Criando WebControls

Acredito que todos que já trabalharam com formulários nas páginas já tiveram problemas com a perda de dados destes campos, seja no momento de uma validação Server-side ou em mudanças de páginas. Enfim neste artigo vou mostrar uma forma de criar seus controles HTML no Server de forma que não perca seus valores a cada post feito.

Para isso iremos criar uma classe chamada HTML

Depois iremos criar nossos métodos estáticos para cada tipo de controle como mostra abaixo:
  1. <?php
  2. class HTML {
  3. //CONSTRUTOR
  4. public function __construct() { }
  5. //CONSTRUTOR
  6.  
  7. //MÉTODOS
  8. static public function TextBox($name, $maxlength, $atributos){
  9. $valor = $_REQUEST[$name];
  10.  
  11. $retorno = "<input type='text' name='$name' id='$name' maxlength='".$maxlength ."' value='".$valor."'";
  12.  
  13. //Tem atributos?
  14. if($atributos){
  15. $retorno = $retorno . " ". $atributos;
  16. }
  17. $retorno = $retorno . " />";
  18. print $retorno;
  19. }
  20.  
  21. static public function PasswordField($name, $maxlength, $atributos){
  22. $valor = $_REQUEST[$name];
  23.  
  24. $retorno = "<input type='password' name='" . $name . "' id='$name' maxlength='".$maxlength ."' value='".$valor."'";
  25. //Tem atributos?
  26. if($atributos){
  27. $retorno = $retorno . " ". $atributos;
  28. }
  29. $retorno = $retorno . " />";
  30. print $retorno;
  31. }
  32.  
  33. static public function RadioButton($name, $valor, $atributos, $texto){
  34.  
  35. $retorno = "<input type='radio' name='" . $name . "' value='".$valor."'";
  36.  
  37. //Tem atributos?
  38. if($atributos){
  39. $retorno = $retorno . " ". $atributos;
  40. }
  41.  
  42. //Deveria estar checkado?
  43. if(@$_REQUEST[$name] == $valor){
  44. $retorno = $retorno . "checked";
  45. }
  46.  
  47. $retorno = $retorno . " />";
  48.  
  49. //Tem texto?
  50. if($texto){
  51. $retorno = $retorno . $texto;
  52. }
  53.  
  54. print $retorno;
  55. }
  56.  
  57. static public function CheckBox($name, $valor, $atributos, $texto){
  58. $retorno = "<input type='checkbox' name='" . $name . "' value='".$valor."'";
  59.  
  60. //Tem atributos?
  61. if($atributos){
  62. $retorno = $retorno . " ". $atributos;
  63. }
  64.  
  65. $nome = str_replace("[]", "", $name);
  66. if(!is_array($_REQUEST[$nome])){
  67. //Deveria estar checkado?
  68. if($_REQUEST[$name] == $valor){
  69. $retorno = $retorno . " checked";
  70. }
  71.  
  72. if($texto){
  73. $texto = " <label for='$name'>$texto</label>";
  74. }
  75. }else{
  76. for($i = 0; $i < count($_REQUEST[$nome]); $i++ ){
  77. if($_REQUEST[$nome][$i] == $valor){
  78. $retorno = $retorno . " checked='checked'";
  79. break;
  80. }
  81. }
  82.  
  83. }
  84.  
  85. $retorno = $retorno . " />";
  86.  
  87. //Tem texto?
  88. if($texto){
  89. $retorno = $retorno . $texto;
  90. }
  91. print $retorno;
  92. }
  93. static public function HiddenField($name, $atributos){
  94. $valor = $_REQUEST[$name];
  95.  
  96. $retorno = "<input type='hidden' name='" . $name . "' value='".$valor."'";
  97.  
  98. //Tem atributos?
  99. if($atributos){
  100. $retorno = $retorno . " ". $atributos;
  101. }
  102. $retorno = $retorno . " />";
  103. print $retorno;
  104. }
  105.  
  106. static public function TextArea($name, $linhas, $colunas, $atributos){
  107. $valor = $_REQUEST[$name];
  108.  
  109. $retorno = "<textarea name='" . $name . "' rows='" . $linhas . "' cols='" . $colunas . "' value='" . $valor . "'";
  110.  
  111. //Tem atributos?
  112. if($atributos){
  113. $retorno = $retorno . " ". $atributos;
  114. }
  115. $retorno = $retorno . ">$valor</textarea>";
  116. print $retorno;
  117. }
  118.  
  119. static public function DropDownList($name, $arr, $atributos){
  120. $retorno = "<select name='".$name."' id='".$name."'";
  121.  
  122. //Tem atributos?
  123. if($atributos){
  124. $retorno = $retorno . " ". $atributos;
  125. }
  126.  
  127. $retorno .= ">";
  128. foreach($arr as $key=>$value){
  129. $retorno .= "<option value='".$value."'";
  130. //Deveria estar checkado?
  131.  
  132. if(@$_REQUEST[$name] == $value){
  133. $retorno = $retorno . "selected";
  134. }
  135.  
  136. $retorno .= ">".$key."</option>";
  137. }
  138. $retorno .="</select>";
  139. print $retorno;
  140. }
  141.  
  142. static public function ListItem($nome, $exibir, $valor){
  143. $html = "";
  144. $selected = "";
  145. if(!is_null($valor) && isset($_REQUEST[$nome]))
  146. {
  147. if( is_array($_REQUEST[$nome]))
  148. {
  149. foreach($arr as $key=>$value){
  150. if($value == $valor){
  151. $selected = "selected=\"selected\"";
  152. }
  153. }
  154. }
  155. else
  156. {
  157. if(!is_null($_REQUEST[$nome]) && $_REQUEST[$nome]== $valor){
  158. $selected = "selected=\"selected\"";
  159. }
  160. }
  161. }
  162. if(!is_null($exibir)){
  163. $exibir = htmlentities($exibir);
  164. }
  165.  
  166. $html = "<option value=\"" . $valor . "\" " . $selected . " >" . $exibir . "</option>";
  167.  
  168. print $html;
  169. }
  170.  
  171. static public function Button($name, $texto, $atributos){
  172.  
  173. $retorno = "<input type='submit' name='$name' id='$name' value='$texto'";
  174.  
  175. //Tem atributos?
  176. if($atributos){
  177. $retorno = $retorno . " ". $atributos;
  178. }
  179. $retorno = $retorno . " />";
  180. print $retorno;
  181. }
  182.  
  183. static public function ImageButton($name, $img, $atributos){
  184. $retorno = "<input type='image' src='$img' name='$name' id='$name'";
  185.  
  186. //Tem atributos?
  187. if($atributos){
  188. $retorno = $retorno . " ". $atributos;
  189. }
  190. $retorno = $retorno . " />";
  191. print $retorno;
  192. }
  193.  
  194. //MÉTODOS
  195. }
  196. ?>
Agora para usá-los para chamar sua classe na sua página e efetuar as chamadas dentro do formulário, igual mostra abaixo:

include_once 'HTML.php';

  1. <head></head>
  2. <form name=”form” method=”post” action=”pagina.php”>
  3. <?php HTML:: TextBox(“nome”,100, “class=’campos’”); ?>
  4. <?php HTML:: TextBox(“email”,100, “class=’campos’”); ?>
  5. <?php HTML:: Button(“btnEnviar”,”Enviar”,””);?>
  6. </form>
  7. </body>

Até a próxima.

Opções de Interação

Comentários

Alt
Por: rodrigo, 13/05/2010   11:30:17
Ficou muito bom mesmo, eu fiz uma modificação simples na função textbox:

<?
//TextBox
static public function TextBox($name, $maxlength, $valor, $atributos)
{

if(@$_REQUEST[$name])
{
$valor = $_REQUEST[$name];
}

$retorno = "<input type='text' name='$name' id='$name' maxlength='".$maxlength ."' value='".$valor."'";

//Tem atributos?
if($atributos)
{
$retorno = $retorno . " ". $atributos;
}

$retorno = $retorno . " />";

print $retorno;
}
?>

pq as vezes eu preciso incluir um valor pré-definido para o input.
Show!
Por: Fabiano, 11/05/2010   20:00:12
Vlw pelo artigo!