Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
E aí pessoal?
A criação de formulários que tem muitos campos envolve muito tempo. Ainda mais quando se tem cpf, cnpj, telefone e etc para validar.
Em detrimento disso consegui fazer esse script que cria um form em um minuto. Veja:
class Valida { function isCpfValid($cpf){ for( $i = 0; $i < 10; $i++ ){ if ( $cpf == str_repeat( $i , 11) or !preg_match("@^[0-9]{11}$@", $cpf ) or $cpf == "12345678909" )return false; if ( $i < 9 ) $soma[] = $cpf{$i} * ( 10 - $i ); $soma2[] = $cpf{$i} * ( 11 - $i ); } if(((array_sum($soma)% 11) < 2 ? 0 : 11 - ( array_sum($soma) % 11 )) != $cpf{9})return false; return ((( array_sum($soma2)% 11 ) < 2 ? 0 : 11 - ( array_sum($soma2) % 11 )) != $cpf{10}) ? false : true; } function isCnpjValid( $cnpj ) { $cnpj = preg_replace( "@[./-]@", "", $cnpj ); if( strlen( $cnpj ) <> 14 or !is_numeric( $cnpj ) ) { return false; } $k = 6; $soma1 = ""; $soma2 = ""; for( $i = 0; $i < 13; $i++ ) { $k = $k == 1 ? 9 : $k; $soma2 += ( $cnpj{$i} * $k ); $k--; if($i < 12) { if($k == 1) { $k = 9; $soma1 += ( $cnpj{$i} * $k ); $k = 1; } else { $soma1 += ( $cnpj{$i} * $k ); } } } $digito1 = $soma1 % 11 < 2 ? 0 : 11 - $soma1 % 11; $digito2 = $soma2 % 11 < 2 ? 0 : 11 - $soma2 % 11; return ( $cnpj{12} == $digito1 and $cnpj{13} == $digito2 ); } }class Formulario{ var $script; var $form; var $nomeFormulario; var $relatorioErro; function Formulario($nome, $action) { $this->nomeFormulario = $nome; $this->form = "<form id='".$this->nomeFormulario."' name='".$this->nomeFormulario."' method='post' action='".$action."' onsubmit='valida_".$this->nomeFormulario."()'>\n"; $this->script = "<script>\n function valida_".$this->nomeFormulario."(){\n"; } //Imprime o formulário function toString() { $this->script .= "}\n </script>\n"; if(!empty($this->relatorioErro)) $this->form .= "<div><span>Atenção: Preencha os campos que estão listados abaixo. Isso é necessário para que não haja erros no envio de suas informações.</span> <ul>".$this->relatorioErro."</ul></div>"; $this->form .= "<center><input type='submit' name='".$this->nomeFormulario."' id='".$this->nomeFormulario."' value='Enviar' class='button' /></center>\n </form>\n"; echo $this->script; echo $this->form; } function text($label, $nome, $size, $type, $obrigatorio) { //Imprime campo $this->form .= "<label for='".$label."'>".$label.":</label>\n <input type='text' id='".$nome."' name='".$nome."' maxlength='".$size."' size='".$size."' value='".$_POST[$nome]."' class='inputbox' /><br />\n"; //Validação try { if($obrigatorio == true && empty($_POST[$nome]) && $_POST[$this->nomeFormulario]) throw new vazioException("<li>O campo ".$label." está vazio.</li>"); if($type == "cpf" && !Valida::validaCpf($_POST[$nome])) throw new validaException("<li>O conteúdo de ".$label." é inválido.</li>"); else if($type == "cnpj" && !Valida::validaCnpj($_POST[$nome])) throw new validaException("<li>O conteúdo de ".$label." é inválido.</li>"); else if($type == "cpfcnpj" && (!Valida::validaCpf($_POST[$nome]) || !Valida::validaCnpj($_POST[$nome]))) throw new validaException("<li>O conteúdo de ".$label." é inválido.</li>"); else if($type == "cep" && !eregi("^\d{5}\-?\d{3}$",$_POST[$nome])) throw new validaException("<li>O conteúdo de ".$label." é inválido.</li>"); else if($type == "email" $$ !eregi("^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,3}$",$_POST[$nome])) throw new validaException("<li>O conteúdo de ".$label." é inválido.</li>"); } catch(Exception $e) { $this->relatorioErro .= $e->getMessage(); } } function combobox($label, $nome, $values, $obrigatorio) { //Imprime campo $this->form .= "<label for='".$label."'>".$label.":</label>\n <select name='".$nome."' id='".$nome."'> <option value=''>[Selecione um ítem]</option>"; foreach ($values as $value){ if($_POST[$nome] == $value) $this->form .= "<option value='".$value."' selected='selected'>".$value."</option>"; else $this->form .= "<option value='".$value."'>".$value."</option>"; } $this->form .= "</select><br />\n"; //Validação try { if($obrigatorio == true && empty($_POST[$nome]) && $_POST[$this->nomeFormulario]) throw new vazioException("<li>O campo ".$label." está vazio.</li>"); } catch(Exception $e) { $this->relatorioErro .= $e->getMessage(); } } function radiobutton($label, $nome, $values, $obrigatorio) { //Imprime campo $this->form .= "<label for='".$label."'>".$label.":</label>\n"; foreach ($values as $value){ if($_POST[$nome] == $value) $this->form .= "<input name='".$nome."' type='radio' value='".$value."' checked='checked' id='".$nome."' />".$value; else $this->form .= "<input name='".$nome."' type='radio' value='".$value."' id='".$nome."' />".$value; } $this->form .= "<br />\n"; //Validação try { if($obrigatorio == true && empty($_POST[$nome]) && $_POST[$this->nomeFormulario]) throw new vazioException("<li>O campo ".$label." está vazio.</li>"); } catch(Exception $e) { $this->relatorioErro .= $e->getMessage(); } } function checkbox($label, $nome, $values, $obrigatorio) { //Imprime campo $this->form .= "<label for='".$label."'>".$label.":</label>\n"; foreach ($values as $value) { $this->form .= "<input name='".$nome."[]' type='checkbox' value='".$value."' id='".$nome."' />".$value; } $this->form .= "<br />\n"; //Validação try { if($obrigatorio == true && empty($_POST[$nome]) && $_POST[$this->nomeFormulario]) throw new vazioException("<li>O campo ".$label." está vazio.</li>"); } catch(Exception $e) { $this->relatorioErro .= $e->getMessage(); } } function uf($label, $nome, $obrigatorio) { //Imprime campo $this->form .= "<label for='".$label."'>".$label.":</label>\n <select name='".$nome."' id='".$nome."' class='inputbox'> <option value=''>[Selecione um Estado]</option>"; if($_POST[$nome]=="AC")$this->form .= "<option value='AC' selected='selected'>AC</option>"; else $this->form .= "<option value='AC'>AC</option>"; if($_POST[$nome]=="AL")$this->form .= "<option value='AL' selected='selected'>AL</option>"; else $this->form .= "<option value='AL'>AL</option>"; if($_POST[$nome]=="AM")$this->form .= "<option value='AM' selected='selected'>AM</option>"; else $this->form .= "<option value='AM'>AM</option>"; if($_POST[$nome]=="AP")$this->form .= "<option value='AP' selected='selected'>AP</option>"; else $this->form .= "<option value='AP'>AP</option>"; if($_POST[$nome]=="BA")$this->form .= "<option value='BA' selected='selected'>BA</option>"; else $this->form .= "<option value='BA'>BA</option>"; if($_POST[$nome]=="CE")$this->form .= "<option value='CE' selected='selected'>CE</option>"; else $this->form .= "<option value='CE'>CE</option>"; if($_POST[$nome]=="DF")$this->form .= "<option value='DF' selected='selected'>DF</option>"; else $this->form .= "<option value='DF'>DF</option>"; if($_POST[$nome]=="ES")$this->form .= "<option value='ES' selected='selected'>ES</option>"; else $this->form .= "<option value='ES'>ES</option>"; if($_POST[$nome]=="GO")$this->form .= "<option value='GO' selected='selected'>GO</option>"; else $this->form .= "<option value='GO'>GO</option>"; if($_POST[$nome]=="MA")$this->form .= "<option value='MA' selected='selected'>MA</option>"; else $this->form .= "<option value='MA'>MA</option>"; if($_POST[$nome]=="MT")$this->form .= "<option value='MT' selected='selected'>MT</option>"; else $this->form .= "<option value='MT'>MT</option>"; if($_POST[$nome]=="MS")$this->form .= "<option value='MS' selected='selected'>MS</option>"; else $this->form .= "<option value='MS'>MS</option>"; if($_POST[$nome]=="MG")$this->form .= "<option value='MG' selected='selected'>MG</option>"; else $this->form .= "<option value='MG'>MG</option>"; if($_POST[$nome]=="PA")$this->form .= "<option value='PA' selected='selected'>PA</option>"; else $this->form .= "<option value='PA'>PA</option>"; if($_POST[$nome]=="PB")$this->form .= "<option value='PB' selected='selected'>PB</option>"; else $this->form .= "<option value='PB'>PB</option>"; if($_POST[$nome]=="PR")$this->form .= "<option value='PR' selected='selected'>PR</option>"; else $this->form .= "<option value='PR'>PR</option>"; if($_POST[$nome]=="PE")$this->form .= "<option value='PE' selected='selected'>PE</option>"; else $this->form .= "<option value='PE'>PE</option>"; if($_POST[$nome]=="PI")$this->form .= "<option value='PI' selected='selected'>PI</option>"; else $this->form .= "<option value='PI'>PI</option>"; if($_POST[$nome]=="RJ")$this->form .= "<option value='RJ' selected='selected'>RJ</option>"; else $this->form .= "<option value='RJ'>RJ</option>"; if($_POST[$nome]=="RN")$this->form .= "<option value='RN' selected='selected'>RN</option>"; else $this->form .= "<option value='RN'>RN</option>"; if($_POST[$nome]=="RO")$this->form .= "<option value='RO' selected='selected'>RO</option>"; else $this->form .= "<option value='RO'>RO</option>"; if($_POST[$nome]=="RS")$this->form .= "<option value='RS' selected='selected'>RS</option>"; else $this->form .= "<option value='RS'>RS</option>"; if($_POST[$nome]=="RR")$this->form .= "<option value='RR' selected='selected'>RR</option>"; else $this->form .= "<option value='RR'>RR</option>"; if($_POST[$nome]=="SC")$this->form .= "<option value='SC' selected='selected'>SC</option>"; else $this->form .= "<option value='SC'>SC</option>"; if($_POST[$nome]=="SE")$this->form .= "<option value='SE' selected='selected'>SE</option>"; else $this->form .= "<option value='SE'>SE</option>"; if($_POST[$nome]=="SP")$this->form .= "<option value='SP' selected='selected'>SP</option>"; else $this->form .= "<option value='SP'>SP</option>"; if($_POST[$nome]=="TO")$this->form .= "<option value='TO' selected='selected'>TO</option>"; else $this->form .= "<option value='TO'>TO</option>"; $this->form .= "</select><br />"; //Validação try { if($obrigatorio == true && empty($_POST[$nome]) && $_POST[$this->nomeFormulario]) throw new vazioException("<li>O campo ".$label." está vazio.</li>"); if(!eregi("^(ac|AC|al|AL|am|AM|ap|AP|ba|BA|ce|CE|df|DF|es|ES|go|GO|ma|MA|mg|MG|ms|MS|mt|MT|pa|PA|pb|PB|pe|PE|pi|PI|pr|PR|rj|RJ|rn|RN|ro|RO|rr|RR|rs|RS|sc|SC|se|SE|sp|SP|to|TO)$",$_POST[$nome])) throw new validaException("<li>O conteúdo de ".$label." é inválido.</li>"); } catch(Exception $e) { $this->relatorioErro .= $e->getMessage(); } } function data($label, $nome, $obrigatorio) { //Imprime campo $this->form .= "<label for='".$label."'>".$label.":</label>\n <input type='hidden' name='".$nome."' />\n <input type='text' name='dia_".$nome."' id='dia_".$nome."' value='".$_POST['dia_'.$nome]."' class='inputbox' maxlength='2' size='2' />/\n <input type='text' name='mes_".$nome."' id='mes_".$nome."' value='".$_POST['mes_'.$nome]."' class='inputbox' maxlength='2' size='2' />/\n <input type='text' name='ano_".$nome."' id='ano_".$nome."' value='".$_POST['ano_'.$nome]."' class='inputbox' maxlength='4' size='4' /><br />\n"; $this->script .= "document.getElementById('".$nome."').value = \n document.getElementById('dia_".$nome."').value +\n '/' + \n document.getElementById('mes_".$nome."').value + \n '/' + \n document.getElementById('ano_".$nome."').value;\n"; //Validação try { if($obrigatorio == true && empty($_POST[$nome]) && $_POST[$this->nomeFormulario]) throw new vazioException("<li>O campo ".$label." está vazio.</li>"); if(!eregi("^(0?[1-9]|[12][0-9]|3[01])[/](0?[1-9]|1[12])[/](19[0-9]{2}|[2][0-9][0-9]{2})$",$_POST[$nome])) throw new validaException("<li>O conteúdo de ".$label." é inválido.</li>"); catch(Exception $e) { $this->relatorioErro .= $e->getMessage(); } } function telefone($label, $nome, $obrigatorio) { //Imprimir o campo $this->form .= "<label for='".$label."'>".$label.":</label> <input type='hidden' name='".$nome."' /> (<input type='text' name='ddd_".$nome."' value='".$_POST['ddd_'.$nome]."' class='inputbox' maxlength='3' size='3' />) <input type='text' name='num_".$nome."' value='".$_POST['num_'.$nome]."' class='inputbox' maxlength='8' size='8' /><br />"; $this->script .= "document.getElementById('".$nome."').value = '(' + document.getElementById('ddd_".$nome."').value + ') ' + document.getElementById('num_".$nome."').value;"; //Validação try { if($obrigatorio == true && empty($_POST[$nome]) && $_POST[$this->nomeFormulario]) throw new vazioException("<li>O campo ".$label." está vazio.</li>"); if(!eregi("^(\d{2,3}|\(\d{2,3}\))[ ]\d{3,4}\d{3,4}$",$_POST[$nome])) throw new validaException("<li>O conteúdo de ".$label." é inválido.</li>"); catch(Exception $e) { $this->relatorioErro .= $e->getMessage(); } } function endereco($label, $nome, $obrigatorio) { //Imprimir o campo $this->form .= "<label for='".$label."'>".$label.":</label> <input type='hidden' name='".$nome."' /> <input type='text' name='rua_".$nome."' value='".$_POST['rua_'.$nome]."' size='24' class='inputbox' /> Nº:<input type='text' name='num_".$nome."' value='".$_POST['num_'.$nome]."' size='5' class='inputbox' maxlength='5' /> Compl.:<input type='text' name='complemento_".$nome."' value='".$_POST['complemento_'.$nome]."' size='10' class='inputbox' /> Bairro:<input type='text' name='bairro_".$nome."' value='".$_POST['bairro_'.$nome]."' size='15' class='inputbox' /><br />"; $this->script .= "document.getElementById('".$nome."').value = document.getElementById('rua_".$nome."').value + ', ' + document.getElementById('num_".$nome."').value + ' Compl.:' + document.getElementById('complemento_".$nome."').value + ' Bairro:' + document.getElementById('bairro_".$nome."').value;"; //Validação try { if($obrigatorio == true && empty($_POST[$nome]) && $_POST[$this->nomeFormulario]) throw new vazioException("<li>O campo ".$label." está vazio.</li>"); } catch(Exception $e) { $this->relatorioErro .= $e->getMessage(); } } }Para utilizá-lo apresente os seguintes comandos:
$form = new Formulario('form1', 'Formulario.php');$form->endereco('Endereço', 'teste', true);$form->telefone('Telefone', 'telefone', false);$form->uf('UF','uf', false);$form->text('Data', 'data', 100, 'email', false);$valores = array('valor1','valor2');$form->combobox('Teste','teste',$valores,false);$form->radiobutton('Radiobutton','radio',$valores,false);$form->checkbox('Checkbox','Checkbox',$valores,false);$form->toString();Pronto rapidinho cria-se um form. O único problema seria com o backup dos valores enviados via checkbox. Quem tiver qualquer sugestão será bem vinda. Vamos minimizar o nosso tempo de desenvolvimento.
Está com alguns bugs que eu estou corrigindo. Quando estiver rodando normalmente eu repasso.
Carregando comentários...