FormConstructor: Formulário Construído por Variável
Publicado por EVERTON DA ROSA 26/02/2007
[ Hits: 6.501 ]
Homepage: http://everton3x.github.io
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.
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); ?>
Cria gráficos para monitoramento de consumo de CPU e Memória a partir de arquivos [Atualização].
Biblioteca de classes para facilitar a criação de formulários e conexão ao MySQL
Menu restrito com permissões de navegação
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Melhorando a precisão de valores flutuantes em python[AJUDA] (11)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)
Vou voltar moderar conteúdos de Dicas e Artigos (3)
OpenVPN no MACBOOK conecta mas não pinga pastas de rede compartilhada ... (1)