+2

Validando dados de formulários diretamente no banco

criado por Henrique Castanon em 18/08/2007 8:00am
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.

<?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

Comentários:

Mostrando 1 - 8 de 8 comentários
Dam disse:
Bom artigo.
20/11/2008 4:24am (~15 anos atrás)

Dam disse:
É...

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)

fccd disse:
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
10/01/2008 11:04am (~16 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
30/09/2007 2:30pm (~16 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.
17/09/2007 6:48am (~16 anos atrás)

Anderson disse:

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 (~16 anos atrás)

inserção no db mudar titulo

Vlw sera muito ultil
14/09/2007 7:05am (~16 anos atrás)

John Marques disse:
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
23/08/2007 6:51am (~16 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)