FormConstructor: Formulário Construído por Variável
Publicado por EVERTON DA ROSA 26/02/2007
[ Hits: 6.521 ]
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); ?>
WebUI: framework para criação de interfaces para Web
Sistema de Boletos e Cobrança Online
Monitoramento simples de servidores [versão 1.0]
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Falta pacotes de suporte ao sistema de arquivos (Gerenciador de discos... (6)
A area de trabalho ficou preta (16)
Agora temos uma assistente virtual no fórum!!! (244)
Servidor said: 530 5.7.0 Must issue a STARTTLS command first (in r... (0)