Pirata_ 0 Denunciar post Postado Setembro 16, 2008 Pessoal, estou desenvolvendo uma função para fazer a validação de formulários, mas andei me perdendo um pouco nela, então gostaria de saber se alguém tem alguma dica para dar, ou se já fizeram algo parecido.. A idéia e parar de digitar para todo form: if (empty($campo1) || empty($campo2)) e trabalhar com algo mais curto, ex: valida($campo1,$campo2); Alguém fez algo parecido ou tenha alguma sugestão para mandar?! Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Setembro 16, 2008 é só trabalhar com function (função), exemplo: function validar($campo1,$campo2){ if(empty($campo1) or empty($campo2)){ print 'Preecha todos os campos.'; } } validar($_POST['campo1'],$_POST['campo2']); e assim por diante... Compartilhar este post Link para o post Compartilhar em outros sites
Pirata_ 0 Denunciar post Postado Setembro 16, 2008 é só trabalhar com function (função), exemplo: function validar($campo1,$campo2){ if(empty($campo1) or empty($campo2)){ print 'Preecha todos os campos.'; } } validar($_POST['campo1'],$_POST['campo2']); e assim por diante... Então, Alaerte.. eu estava fazendo isso.. mas neste caso se eu tivesse um form com 20 validações, eu teria que digitar 20 vezes o empty... E se no form seguinte eu tenha apenas 10 campos pra validar, e minha funcao tem 20 ifs com empty, não acusaria sempre algo vazio ? Eu começei a fazer com foreach e array, pra tentar sanar este problema, mas não consegui chegar a lugar nenhum.. Alguma sugestão?! Abs Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Setembro 17, 2008 vejamos: foreach($_POST AS $campo=>$valores){ $$campo=$valores; if(empty($valores)){ print 'existem campos em branco.'; exit(); } } Compartilhar este post Link para o post Compartilhar em outros sites
Pirata_ 0 Denunciar post Postado Setembro 17, 2008 Obrigado, Alaerte.. vou tentar amanhã utilizar este método.. quem sabe desenrolo! :D Abs Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Setembro 17, 2008 mais o método é este ai, não sabe fazer a funçao a partir dai ? Compartilhar este post Link para o post Compartilhar em outros sites
Pirata_ 0 Denunciar post Postado Setembro 17, 2008 Sim, sei sim.. Já estou usando na verdade... É que mesmo assim não está 100% ainda.. (ou talvez não estou sabendo passar os dados) Estou passando assim: $form -> obrigatorio("$email,$login,$nome"); Ou tbm assim $form -> obrigatorio(array("$email,$login,$nome")); Compartilhar este post Link para o post Compartilhar em outros sites
Ramon Sanches 0 Denunciar post Postado Setembro 17, 2008 _Pirata, há um tempo atrás eu também estava com esse problema e resolvi +/- assim: Primeiro faço uma função gigante onde eu coloco todas as minhas validações ex.: function valida($campo,$valor) { if($campo == "nome"){ if(empty($valor)){ return "O campo $campo deve ser preenchido."; } } } Aí depois disso eu faço foreach em $_POST e vo jogando pra essa função, algo assim: foreach ($_POST as $campo=>$valor){ // trato os dados $valor = trim(strip_tags($valor)); // mando pra função que valida $erro["erro_$campo"] = valida($campo,$valor); } Daí se eu tiver o campo nome por exemplo que estiver vazio eu vou ter num array $erro["erro_nome"] o erro que retornou lá da outra função. Daí eu uso um count pra verificar se não tem erro e boa if (count($erro) == 0) { // faço tudo aqui } ---------------- Now playing: Frank Sinatra - Moon River Compartilhar este post Link para o post Compartilhar em outros sites
Pirata_ 0 Denunciar post Postado Setembro 17, 2008 Nossa, mas aí neste caso você trabalha com 2 funçoes, sendo que qualquer novo form que você tenha ou novo campo a validar você tem que inserir na funcation geral, né ? Acho que tem forma melhor de resolver isso.. Vou tentar e se coonseguinr algo bom, te aviso tbm! ;) Compartilhar este post Link para o post Compartilhar em outros sites
Ramon Sanches 0 Denunciar post Postado Setembro 17, 2008 Então, é que no meu caso eu sempre preciso de uma validação específica pra cada caso... hehe.. Mas acho que se for geral daria pra mudar sim, but, to sem idéias no momento! o_O" Qualquer novidade posta aí ;) Compartilhar este post Link para o post Compartilhar em outros sites
Pirata_ 0 Denunciar post Postado Setembro 17, 2008 mais o método é este ai, não sabe fazer a funçao a partir dai ? Respondendo a sua pergunta, eu sei fazer sim, porém não rolou.. Olha só classe: // CLASSES class form { function obrigatorio($a) { foreach($_POST AS $campo=>$valores){ $campo=utf8_decode($valores); if(empty($valores)){ print 'existem campos em branco.'; exit(); } } } } // Chamando a função.. $form -> obrigatorio(array("$email,$login,$nome")); Algum conselho? Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Setembro 17, 2008 Cara eu já te passei o código completo, bata tu fazer isso: function validar(){ foreach($_POST AS $campo=>$valores){ $$campo=$valores; if(empty($valores)){ print 'existem campos em branco.'; exit(); } } } não é preciso atribuir nada a ela, está toda dinâmica, a única coisa que tem que fazer é incluir a função na página e chama-la: include('validar.php'); validar(); pronto, a programação irá pegar todos os posts automaticamente, quando for usar o valor de algum campo, não precisa colocar o $_POST['campo'] apenas o nome do campo como var assim: $campo se caso algum campo estiver vazio ele irá acusar. Compartilhar este post Link para o post Compartilhar em outros sites
Pirata_ 0 Denunciar post Postado Setembro 17, 2008 Sim, eu entendi.. É que tem um problema.. nem todos os campos do form são obrigatórios.. por isso que falei. Mas vou tentar desenrolar algo aqui, e se conseguir aviso! vlw mais uma vez :) [EDITANDO...] Aeeeeeeeeeeeeeee, acho que consegui cara! ;) function obrigatorio($campos) { $campos = explode(",",$campos); foreach($_POST as $campo => $valor){ if(empty($valor) && in_array($campo,$campos)){ echo "O campo ".$campo." deve ser preenchido!"; exit; } } } E estou chamando pelo nome dos campos, e não pelas variáveis: $form -> obrigatorio("nome,email,login"); Se alguém tiver alguma observação, por favor, é só falar! ;) abs Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Setembro 18, 2008 se conseguiu então beleza. Compartilhar este post Link para o post Compartilhar em outros sites