FormConstructor: Formulário Construído por Variável
Publicado por EVERTON DA ROSA 26/02/2007
[ Hits: 6.756 ]
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);
?>
Mapeamento dinâmico de dados em PHP
Formularios Atomatic Esse vcs vao adorar
Consulta Amazon! Buscas na Web
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático
Como impedir exclusão de arquivos por outros usuários no (Linux)
Formas seguras de instalar Debian Sid (10)
Alguém executou um rm e quase mata a Pixar! (6)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (12)
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (5)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (6)









