PUBLICIDADE
Este código tem nota
10

Autor

everton3x

Everton da Rosa

membro deste janeiro de 2007

Compartilhe e guarde

  • Rec6
  • StumbleUpon
  • ueba
  • linkk
  • dihitt
  • linkloko
  • linkto
  • Technorati
  • Simpy
  • del.icio.us
  • Faves: Fave It!

PUBLICIDADE

Enquete

Com qual Framework JavaScript você trabalha?

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.
  • Visualizar demonstração do código
Página forms.php que armazena as variáveis:

<?
$form1=array( //Contém a tag form
      "title"=>"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:

<? include('forms.php');

function fieldConstructor($fields){
   while(list($n,$tag)=each($fields)){
      $type=$tag[field];
      $campos.='<label for="'.$tag[name].'">'.$tag[label].': </label>';
      if($type=='textarea'){
         $campos.="<$type ";
         while(list($prop,$value)=each($tag)){
            if($prop!="field" && $prop!="value"){
               $campos.=$prop.'="'.$value.'" ';
            }else{}
         }
         $campos.='>'.$tag[value].'</textarea><br>';
      }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.='<option value="'.$value.'" '.$selected.'>'.$label.'</option>';
            }
            $campos.='</select><br>';
      }else{
         $campos.="<$type ";
               while(list($prop,$value)=each($tag)){
                  if($prop!="field"){
                     $campos.=$prop.'="'.$value.'" ';
                  }
               }
         $campos.="><br>";
      }
   }
   return $campos;
}

function formConstructor($form){
//Monta o cabeçalho da página/formulário
   $f_title=$form[title];
   $print="<h1>$f_title</h1><hr>";
//Monta a tag form
   $print.="<form ";
   while(list($key,$val)=each($form)){
      if($key!="fieldsets"){
         $print.=$key.'="'.$val.'" ';
      }else{}
   }
   $print.='>';
//Monta os fieldsets
   $fieldsets=$form[fieldsets];
   while(list($k,$atual)=each($fieldsets)){
      $print.='<fieldset ';
      while(list($key,$val)=each($atual)){
         if($key!="elements"){
            $print.=$key.'="'.$val.'" ';
         }else{}
      }
      $print.='>';
      $print.="<legend>".$atual[title]."</legend>";
      $print.=fieldConstructor($atual[elements]);//Insere os campos
      $print.='</fieldset>';
   }
//Fecha o formulário e imprime a página   
   $print.='<input name="voltar" type="button" onClick="javascript:history.back();" value="Voltar"><input name="limpar" type="reset" value="Limpar"><input name="enviar" type="submit" value="Enviar">';
   $print.='</form>';
   echo $print;
}

formConstructor($form1);

?>

Sim   Não   Este código foi útil para você?
NotaComentário
10
victords comentou em 11/6/2009

Otimo!

bom para gerar formulários de acordo com um formulário preenchido anteriormente
e só editar algumas coisas
Regras:
Os comentários seguem as seguintes regras:
  • Todos os comentários são enviados por membros cadastrados no site.
  • A pontuação de comentários de conteúdo do próprio membro não serão computados.
  • Os comentários serão pré-aprovados, porém a equipe do site revisará o conteúdo de todos os comentários podendo ser invalidados (inclusive a pontuação).
  • Os comentários precisam ter, obrigatóriamente, coerência sobre o conteúdo que será comentado.
  • O membro que atingir 5 comentários invalidados não poderá mais comentar dentro do site. Com isso o membro não poderá mais ganhar pontos com comentários.
  • Há um limite de 10 comentários por dia para cada membro.
  • Qualquer comentário após ter sido publicado poderá ser retirado através da opção ( denunciar)

Comente

     (ainda não tem cadastro? clique aqui!)


Máximo de 30 caracteres

Máximo de 255 caracteres
 

R&W Consulting - Soluções Web Hospedagem UOL HOST PagSeguro - solução para pagamentos online
© 2006-2009 R&W Informática Ltda. - Todos os direitos reservados.