Validando dados de formulários diretamente no banco
Normalmente temos um formulário HTML que chama um programinha (o exemplo está em PHP ) que faz a validação dos dados e, caso esteja tudo de acordo, faz a inclusão no banco de dados.
Com a função abaixo, podemos fazer essa validação utilizando o erro que o banco de dados retorna. Após, faremos a tradução do mesmo e exibiremos para o usuário.
Podemos utilizar essa função da seguinte forma, usando a biblioteca ADODB nesse caso:
Bom, essa é somente mais uma forma de validar dados.
Espero ter ajudado,
Henrique Castanon
Com a função abaixo, podemos fazer essa validação utilizando o erro que o banco de dados retorna. Após, faremos a tradução do mesmo e exibiremos para o usuário.
<?php function ExibirMensagemBanco($erro) { if (strchr($erro, "invalid input syntax")) { $varerro = "Preencha os campos com o tipo de dado correto!"; } if (strchr($erro, "invalid input syntax for type date")) { $varerro = "Preencha a data corretamente com '/'"; } if (strchr($erro, "duplicate key violates")) { $varerro = "Violação da chave primária!"; } if (strchr($erro, "value too long")) { $varerro = "Campo excedeu o tamanho limite!"; } if (strchr($erro, "violates foreign key constraint")) { $varerro = "Violação de chave estrangeira"; } if (!$varerro) { $varerro = "Ocorreu um erro! Tente novamente!"; } // o conteúdo da variável $varerro fica a cargo // do desenvolvedor. Cada um deve transmitir a // mensagem da forma mais simples para o usuário return $varerro; } ?>
Podemos utilizar essa função da seguinte forma, usando a biblioteca ADODB nesse caso:
<?php $conn = &ADONewConnection('mysql'); $conn->Connect("servidor", "usuario", "senha", "basededados"); $query = "INSERT INTO nometabela (campo1, campo2) VALUES ('$campo1', '$campo2')"; $exec = $conn->Execute($query); if ($conn->ErrorMsg()) { echo ExibirMensagemBanco($conn->ErrorMsg()); } else { echo "incluiu com sucesso"; } ?>
Bom, essa é somente mais uma forma de validar dados.
Espero ter ajudado,
Henrique Castanon
Bom artigo.
20/11/2008 4:24am
(~16 anos atrás)
É...
Além dos diversos serviços que o banco já dar conta, ainda ter que validar direto dele.. hum..
Acho que vai sobre carregar o BD.
Além dos diversos serviços que o banco já dar conta, ainda ter que validar direto dele.. hum..
Acho que vai sobre carregar o BD.
14/05/2008 5:08am
(~16 anos atrás)
Bom,
No meu ver um javascript para criticar isso seria melhor do que você fazer direto no banco, nunca vi ninguém usando esse metodo !!!
Sorry
No meu ver um javascript para criticar isso seria melhor do que você fazer direto no banco, nunca vi ninguém usando esse metodo !!!
Sorry
10/01/2008 11:04am
(~17 anos atrás)
A intenção foi boa apesar de não ser aplicavel na pratica
mas valleu o artigo, para termos outros pontos de vista
mas valleu o artigo, para termos outros pontos de vista
30/09/2007 2:30pm
(~17 anos atrás)
Prezado Anderson,
Bom Dia!
A intenção do artigo não é dizer o que é melhor ou não, mas apenas colocar mais uma forma! Espero que compreenda!
Abraços e obrigado pelo comentário.
Henrique.
Bom Dia!
A intenção do artigo não é dizer o que é melhor ou não, mas apenas colocar mais uma forma! Espero que compreenda!
Abraços e obrigado pelo comentário.
Henrique.
17/09/2007 6:48am
(~17 anos atrás)
Desculpe, cara, mas você ta viajando na maionese. Abrir uma conexão com o banco apenas para validar um formuário (Aliás, isso não é validação de formulário)? Fala sério. No seu Localhost pode até funcionar bem, mas coloca isso em um servidor em produção, com uma base de singelos 10.000 usuários e tabelas com 1.000.000 de linhas. Adivinha o que vai acontecer? Não vou nem falar das mensagens de erro: "Violação de chave estrangeira"? Isso diz alguma coisa para um usuário leigo? Esse é um grande erro dos (nem todos, claro) programadores, achar que os usuários dos seus sistemas também são programadores. Desculpe se peguei pesado, mas realmente jamais esperava ler tal absurdo.
17/09/2007 6:37am
(~17 anos atrás)
Mais não foi validação do formulário e sim da inserção no banco.. acho q tinha que trocar esse nome ai..
intendi seu intuito.. mas acho que está incoerente..
:D
intendi seu intuito.. mas acho que está incoerente..
:D
23/08/2007 6:51am
(~17 anos atrás)