Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jefferson andre

form com busca no mysql ao sair do campo cnpj

Recommended Posts

saudacoes,

No meu form eu gostaria de colocar uma rotina no campo cnpj para que apos o preenchimento (cursor sair do campo) fosse feita uma pesquisa no mysql onde verificaria se a informacao ja havia sido cadastrada anteriormente, e caso seja um alerta fosse disparado notificando o usuario.

É possivel fazer isso e como fazer ?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, é claro. Vou tentar explicar aqui. Você vai precisar usar Javascript e AJAX (para fazer a requisição de forma assíncrona).

Bom, no campo de CNPJ você vai ter que colocar um evento javascript chamado onblur, que é acionado quando o campo é desfocado:

<input type="text" onblur="verificaCNPJ(this)" name="cnpj"/>
<div id="resultado"></div> 

Como da pra perceber esse evento aciona a função verificaCNPJ, e como parâmetro chamamos o próprio campo: this.

Essa função vai executar um AJAX usando jQuery, então certifique-se que você tem JQuery (se não tiver, comenta que eu faço do modo tradicional com Javascript).

function verificaCNPJ(campo){
    $.ajax({
        url: "verifica_cnpj.php?cnpj=" + campo.value,
        success: function(data){
            if(data == 'true'){
                $("#resultado").html("CNPJ válido!");
            }
            else{
                $("#resultado").html("CNPJ inválido!");
            }
        },
        error: function(data){
            $("#resultado").html("Ocorreu um erro, contate um administrador!");
        },
        type: 'GET'
    })
}

Esse script faz nada menos que uma requisição a um arquivo php que está no servidor (óbvio) mas em tempo real, sem precisar recarregar a página. Mas a gente tem que usar esse arquivo para verificar realmente e retornar um resposta para o nosso Javascript, e o Javascript retornar de forma clara para o usuário.

verifica_cnpj.php

<?php
//Conecta ao seu banco de dados, vou usar Mysqli, mas você pode usar PDO também, depende de como trabalha, e o nome do link de conexão é $conexao
if(isset($_GET['cnpj'])){
    //Protegendo contra SQL Injection
    $cnpj = mysqli_real_escape_string($conexao, $_GET['cnpj']);
    //Pode usar tanto COUNT quanto mysqli_num_rows, COUNT é mais recomendado para procurar grande número de dados
    $sql_valida = "SELECT * FROM nome_da_tabela WHERE cnpj = '$cnpj'";
    $resposta = mysqli_query($conexao, $sql_valida) or die(mysqli_error());
    $numero_linhas = mysqli_num_rows($r);
    //Se tiver alguma linha, significa que já é CNPJ cadastrado
    if($numero_linhas > 0){
        //Retornamos para o Javascript
        echo "false";
        exit;
    }
    echo "true";
    exit;
}
?>

É basicamente isso, espero ter ajudado, se restar alguma dúvida é só falar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta aparecendo uma mensagem de erro apos a inclusao da funcao na linha 200

dizendo :

Parse error: syntax error, unexpected ')', expecting variable (T_VARIABLE) in C:\xampp\htdocs\xcompbrasil\entrar.php on line 200

Campo cnpj onde fiz a mudanca 
              <tr>
                <th colspan="2" scope="row"><div align="left">CNPJ:
                    <input name="cnpj" type="text" onblur="verificaCNPJ(this)" />
					<div id="resultado"></div> 
                </div>                  <div align="left"></div></th>


<?php ---> linha 200
function verificaCNPJ(campo){
    $.ajax({
        url: "verifica_cnpj.php?cnpj=" + campo.value,
        success: function(data){
            if(data == 'true'){
                $("#resultado").html("CNPJ válido!");
            }
            else{
                $("#resultado").html("CNPJ inválido!");
            }
        },
        error: function(data){
            $("#resultado").html("Ocorreu um erro, contate um administrador!");
        },
        type: 'GET'
    })
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é JS você tem que colocar fora do <?php ... ?>

<?php
echo 'bla bla';
?>
aqui o js
<?php
echo 'la la';
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é JS você tem que colocar fora do <?php ... ?>

<?php
echo 'bla bla';
?>
aqui o js
<?php
echo 'la la';
?>

Obrigado pela ajuda, mas mesmo com as mudancas ele nao funciona e nem da erro.

entrar.php

                <th colspan="2" scope="row"><div align="left">CNPJ:
                    <input name="cnpj" type="text" onblur="verificaCNPJ(this)" />
					<div id="resultado"></div> 

verificacnpj.php

<?php
echo "verifica_cnpj"; // Essa mensagem deveria aparecer na tela

if(isset($_GET['cnpj'])){
    //Protegendo contra SQL Injection
    $cnpj = mysqli_real_escape_string($arquivo, $_GET['cnpj']);
	
    //Pode usar tanto COUNT quanto mysqli_num_rows, COUNT é mais recomendado para procurar grande número de dados
    $sql_valida = "SELECT * FROM empresa WHERE cnpj = '$cnpj'";
    $resposta = mysqli_query($conexao, $sql_valida) or die(mysqli_error());
    $numero_linhas = mysqli_num_rows($r);
    //Se tiver alguma linha, significa que já é CNPJ cadastrado
    if($numero_linhas > 0){
        //Retornamos para o Javascript
        echo "false";
        exit;
    }
    echo "true";
    exit;
}
?>

A rotina de verificacao dentro do html


function verificaCNPJ(campo){
    $.ajax({
        url: "verifica_cnpj.php?cnpj=" + campo.value,
        success: function(data){
            if(data == 'true'){
                $("#resultado").html("CNPJ válido!");
            }
            else{
                $("#resultado").html("CNPJ inválido!");
            }
        },
        error: function(data){
            $("#resultado").html("Ocorreu um erro, contate um administrador!");
        },
        type: 'GET'
    })
}

Sera que o problema esta no Ajax ? se for existe algum comando para saber se ele existe aqui ?

Obrigado mais uma vez

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.