Categorias

FormConstructor: Formulário Construído por Variável

Este script PHP contém uma função que constrói um formulário com base em informações passadas em uma variável. É um pouco complexo para montar a variável, mas é só seguir a existente no modelo. Depois ele monta o formulário.

Muito interessante para quem utiliza muitos formulários e deseja ou faz freqüentes mudanças de formatação e layout. Nesse caso, é só modificar a formatação direto na função.

Veja este código em funcionamento

Página forms.php que armazena as variáveis:

"Título do formulário",
      "name"=>"f_input.php",
      "action"=>"acao.php",
      "method"=>"get",
      "fieldsets"=>array( //Contém as tags fieldset
         array(//fieldset 1
            "title"=>"Fieldset 1",
            "id"=>"fieldset1",
            "elements"=>array( //Array contendo os elementos do fieldset
               array(
                  "field"=>"input",//contém o tipo de campo
                  "label"=>"Campo 1", //contém a legenda que vai pertencer ao campo
                  "name"=>"campo1",
                  "type"=>"text",
                  "value"=>"Texto do campo",
                  "size"=>"50"
               ),//fim campo1
               array(
                  "field"=>"input",
                  "label"=>"Campo 2",
                  "name"=>"campo2",
                  "type"=>"password",
                  "value"=>"Texto do campo",
                  "size"=>"50"
               ),//fim campo2
               array(
                  "field"=>"input",
                  "type"=>"checkbox",
                  "label"=>"Campo 3",
                  "name"=>"campo3",
                  "value"=>"3"
               ),//fim campo3
               array(
                  "field"=>"input",
                  "type"=>"checkbox",
                  "label"=>"Campo 4",
                  "name"=>"campo4",
                  "value"=>"4",
                  "checked"=>"true"
               ),//fim campo4
               array(
                  "field"=>"textarea",
                  "label"=>"Campo 5",
                  "name"=>"campo5",
                  "cols"=>"40",
                  "rows"=>"10",
                  "value"=>"Conteúdo do campo 5"
               ),//fim campo 5
               array(
                  "field"=>"select",
                  "label"=>"Campo 6",
                  "name"=>"campo6",
                  "options"=>array(//array contendo as opções no formato value,selected,rótulo, separados por ponto-e-vírgula. Para as opões não selecionadas, coloque um espaçoem branco entre os ponto-e-vírgula
                     "0; ;Zero",
                     "1;selected;Um",
                     "2; ;Dois",
                     "3; ;Três"
                  )//fim array options
               )//fim campo6
            )//fim array elements
         ),//fim do fieldset1
         array(//fieldset 1
            "title"=>"Fieldset 2",
            "id"=>"fieldset2",
            "elements"=>array( //Array contendo os elementos do fieldset
               array(
                  "field"=>"input",//contém o tipo de campo
                  "label"=>"Campo 1", //contém a legenda que vai pertencer ao campo
                  "name"=>"campo1",
                  "type"=>"text",
                  "value"=>"Texto do campo",
                  "size"=>"50"
               ),//fim campo1
               array(
                  "field"=>"input",
                  "label"=>"Campo 2",
                  "name"=>"campo2",
                  "type"=>"password",
                  "value"=>"Texto do campo",
                  "size"=>"50"
               ),//fim campo2
               array(
                  "field"=>"input",
                  "type"=>"checkbox",
                  "label"=>"Campo 3",
                  "name"=>"campo3",
                  "value"=>"3"
               ),//fim campo3
               array(
                  "field"=>"input",
                  "type"=>"checkbox",
                  "label"=>"Campo 4",
                  "name"=>"campo4",
                  "value"=>"4",
                  "checked"=>"true"
               ),//fim campo4
               array(
                  "field"=>"textarea",
                  "label"=>"Campo 5",
                  "name"=>"campo5",
                  "cols"=>"40",
                  "rows"=>"10",
                  "value"=>"Conteúdo do campo 5"
               ),//fim campo 5
               array(
                  "field"=>"select",
                  "label"=>"Campo 6",
                  "name"=>"campo6",
                  "options"=>array(//array contendo as opções no formato value,selected,rótulo, separados por ponto-e-vírgula. Para as opões não selecionadas, coloque um espaçoem branco entre os ponto-e-vírgula
                     "0; ;Zero",
                     "1;selected;Um",
                     "2; ;Dois",
                     "3; ;Três"
                  )//fim array options
               )//fim campo6
            )//fim array elements
         )//fim do fieldset2
      )//fim array fieldsets
)// fim array form1;
?>


Página pagina.php, que contém as funções para montar o formulário:

'.$tag[label].': ';
      if($type=='textarea'){
         $campos.="<$type ";
         while(list($prop,$value)=each($tag)){
            if($prop!="field" && $prop!="value"){
               $campos.=$prop.'="'.$value.'" ';
            }else{}
         }
         $campos.='>'.$tag[value].'
'; }elseif($type=='select'){ $options=$tag[options]; $campos.="<$type "; while(list($prop,$value)=each($tag)){ if($prop!="field" && $prop!="options"){ $campos.=$prop.'="'.$value.'" '; }else{} } $campos.=">"; while(list($nn,$o)=each($options)){ $oo=explode(';',$o); $value=$oo[0]; $selected=$oo[1]; $label=$oo[2]; $campos.=''; } $campos.='
'; }else{ $campos.="<$type "; while(list($prop,$value)=each($tag)){ if($prop!="field"){ $campos.=$prop.'="'.$value.'" '; } } $campos.=">
"; } } return $campos; } function formConstructor($form){ //Monta o cabeçalho da página/formulário $f_title=$form[title]; $print="

$f_title


"; //Monta a tag form $print.="
"; $print.=fieldConstructor($atual[elements]);//Insere os campos $print.=''; } //Fecha o formulário e imprime a página $print.=''; $print.='
'; echo $print; } formConstructor($form1); ?>