Ir para conteúdo

POWERED BY:

Arquivado

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

Felipe Rosseti

Pegar dados do MySQL via PHP

Recommended Posts

Olá amigos! Preciso de Ajuda.

 

É o seguinte tenho no painel de controle do meu site a função para cadastrar clientes, até ai tudo bem. Eles são cadastrados no banco de dados "cadastro" dentro da tabela "cadastro_clientes". Nessa mesma página tenho um campo que quando digitado um CPF nele, o mesmo quero que faça um busca no banco de dados e exiba nos campos de cadastro (formulário) os dados do cliente já cadastrado.

O meu problema é justamente este, como fazer a pesquisa e exibir os dados nos campos.

 

Só para explicar, os campos estão desabilitados, e só são habilitados quando clico em "incluir", fazendo com que o campo de pesquisa fique desabilitado.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Você vai ter uma caixa de texto de cpf um botão buscar, e quando você clicar você quer ir para uma página com os dados do cliente?

 

Isso é fácil, mas se você quiser fazer sem sair da página você vai ter que utilizar ajax.

 

Qual a sua dificuldade, consultar os dados do banco de dados ou atualizar a página com ajax

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá andersondanilo,

 

pelo que me falou terei de utilizar ajax, pois não que sair da página para efetuar a consulta.

 

Como faço para utilizar o ajax para consultar o banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, quem vai consultar o banco não é o ajax, mas o php por trás do ajax.

 

A forma mais simples de utilizar é atráveis de um framework javascript como JQuery que cuida de todo o trabalho crossbrowser para você.

 

Vamos por parte, a teoria é a seguinte:

  1. Quando o usuário terminar de digitar o CPF você vai chamar uma função javascript que você criou, por exemplo: buscaCPF()
  2. A função buscaCPF vai fazer uma requisição para o arquivo "busca_cpf.php"
  3. O Arquivo busca cpf vai buscar no banco de dados esse cpf e retornar um JSON com as informações deste cara, se não encontrar ele pode retornar a string "false" ou "null"
  4. Quando a função buscaCPF receber a resposta do PHP ela vai preenchar os campos do formulário de acordo com os campos no JSON de resposta (se for "false" você apaga tudo)

 

Para isso recomendo o método $.getJSON do JQuery:

 

http://api.jquery.com/jquery.getjson/

 

exemplo:

 

<script type="text/javascript">
function buscaCPF(cpf)
{
    $.getJSON('busca_cpf.php', {'cpf', cpf}, function(response) {
        // vamos pegar o formulário (tag form)
        var formCadastro = document.getElementById('ID_DO_FORM_DE_CADASTRO');
     
        if(response)
        {
            // achamos um cliente
            formCadastro['nome'].value = response.nome;
            formCadastro['sexo'].value = response.sexo;
        }
        else
        {
            // não achamoss ninguém, vamos resetar esses campos do formulário
 
            formCadastro['nome'].value = '';
            formCadastro['sexo'].value = '';
        }
    });
}
</script>

 

já o php seria tão simples o quanto

busca_cpf.php

 

<?php
require 'minhas_funcoes_de_banco_de_dados.php';
 
// pegamos o cpf procurado
$cpf = $_GET['cpf'];
 
// procuramos no banco de dados
$cliente = pega_cliente_a_partir_do_cpf($cliente);
 
if($cliente)
{
    // pois é, achamos um cliente
    $response = array(
        'nome' => $cliente['nome'],
        'sexo' => $cliente['sexo']
    );
}
else
{
    // não achamos niguém
    $response = false;
}
 
// Envia a resposta json
echo json_encode($response);

 

Se você está no chrome, use o inspetor de elemento (Ctrl + Shift + I), existem duas abas fundamentais, "Network" (Rede em PT-BR) e "Console", na aba "Network" você vai ver todas as requisições ajax e clicando nelas você vai ver o que o php respondeu, caso não apareça nenhuma requisição, aconteceu um erro, veja na aba "Console" o erro que aconteceu)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu preciso substituir algo nesta linha ou não:

 

$cliente = pega_cliente_a_partir_do_cpf($cliente);


Outra dúvida, a função buscaCPF eu chamo através do onClick no botao "Procurar"?



Mais uma, eu necessito só da biblioteca Jquery correto? Ou precisa de mais alguma?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Eu preciso substituir algo nesta linha ou não:

 

$cliente = pega_cliente_a_partir_do_cpf($cliente);

 

 

Sim, a ídeia é que a váriavel cliente seja um array associativo com os dados do cliente ou "false" caso não seja encontrado algum cliente, a forma como você vai fazer isso eu não sei, eu particularmente gosto de utilizar o PDO para manipular o banco de dados, mas se você estiver usando o mysql a função para retornar o resultado como um array associativo é a seguinte:

http://php.net/manual/pt_BR/function.mysql-fetch-assoc.php

 

 

 

Outra dúvida, a função buscaCPF eu chamo através do onClick no botao "Procurar"?

 

 

Mais uma, eu necessito só da biblioteca Jquery correto? Ou precisa de mais alguma?

 

 

Sim, é uma das opções, outra opção para ficar ainda mais dinamico é utilizar um setTimeout e clearTimeout para procurar quando o usuário terminar de digitar, alguns segundos depois, exemplo:

 

<input type="text" name="cpf" onkeyup="tentaBuscar(this.value)" />
<script type="text/javascript">
    var timeoutBusca = null;
    function tentaBuscar(cpf)
    {
        clearTimeout(timeoutBusca);
        setTimeout(function() {
            buscaCPF(cpf);
        }, 1000); // 1000 = 1 segundo
    }
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, então meu código ficou da seguinte forma, porém não tem ação nenhuma quando clico no botão.

 

Dá uma olhada e vê se fiz algo errado:

 

O Script:

<script type="text/javascript">
function buscaCPF(cpf)
{
    $.getJSON('busca_cpf.php', {'pesquisa': pesquisa}, function(response) {
        // vamos pegar o formulário (tag form)
        var formCadastro = document.getElementById('cadastro');
     
        if(response)
        {
            // achamos um cliente
            formCadastro['nome'].value = response.nome;
            formCadastro['cpf'].value = response.cpf;
			formCadastro['rg'].value = response.rg;
			formCadastro['email'].value = response.email;
			formCadastro['email2'].value = response.email2;
			formCadastro['celular'].value = response.celular;
			formCadastro['fone'].value = response.fone;
			formCadastro['fone2'].value = response.fone2;
			formCadastro['fax'].value = response.fax;
			formCadastro['rua'].value = response.rua;
			formCadastro['num'].value = response.num;
			formCadastro['compl'].value = response.compl;
			formCadastro['bairro'].value = response.bairro;
			formCadastro['cep'].value = response.cep;
			formCadastro['estado'].value = response.estado;
			formCadastro['cidade'].value = response.cidade;
			
        }
        else
        {
            // não achamoss ninguém, vamos resetar esses campos do formulário
 
           formCadastro['nome'].value = '';
            formCadastro['cpf'].value = '';
			formCadastro['rg'].value = '';
			formCadastro['email'].value = '';
			formCadastro['email2'].value = '';
			formCadastro['celular'].value = '';
			formCadastro['fone'].value = '';
			formCadastro['fone2'].value = '';
			formCadastro['fax'].value = '';
			formCadastro['rua'].value = '';
			formCadastro['num'].value = '';
			formCadastro['compl'].value = '';
			formCadastro['bairro'].value = '';
			formCadastro['cep'].value = '';
			formCadastro['estado'].value = '';
			formCadastro['cidade'].value = '';
        }
    });
}
</script>

 

O arquivo busca_cpf.php:

 

<?php
require '../config.php';
 
// pegamos o cpf procurado
$cpf = $_GET['pesquisa'];
 
// procuramos no banco de dados
$cliente = mysql_fetch_array($cliente);
 
if($cliente)
{
    // pois é, achamos um cliente
    $response = array(
        'nome' => $cliente['nome'],
		'cpf' => $cliente['cpf'],
		'rg' => $cliente['rg'],
		'email' => $cliente['email'],
		'email2' => $cliente['email2'],
		'celular' => $cliente['celular'],
		'fone' => $cliente['fone'],
		'fone2' => $cliente['fone2'],
        'fax' => $cliente['fax'],
		'rua' => $cliente['rua'],
		'num' => $cliente['num'],
		'compl' => $cliente['compl'],
		'bairro' => $cliente['bairro'],
		'cep' => $cliente['cep'],
		'estado' => $cliente['estado'],
		'cidade' => $cliente['cidade']
		
    );
}
else
{
    // não achamos niguém
    $response = false;
}
 
// Envia a resposta json
echo json_encode($response);
?>

O arquivo config.php

 

<?php
$host = "localhost";
$user = "root";
$pass = "";
$banco = "cadastro";
$conexao = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($banco) or die(mysql_error());
?>

O formulário de cadastro:

<form action="" method="post" name="cadastro" id="cadastro">
  <input type="text" name="pesquisa" class="pesquisa" />
  <input type="button" value="Procurar" class="bt" onClick="buscaCPF()" />
  <input type="text" name="nome" class="campo-gd" disabled="disabled" />
  <input type="text" name="cpf" class="campo" disabled="disabled" />      
  <input type="text" name="rg" class="campo" disabled="disabled" />
  <input type="text" name="email" class="campo"  disabled="disabled" />
  <input type="text" name="email2" class="campo"  disabled="disabled" />
  <input type="text" name="celular" class="campo"   disabled="disabled" />
  <input type="text" name="fone" class="campo"  disabled="disabled" />
  <input type="text" name="fone2" class="campo" disabled="disabled" />
  <input type="text" name="fax" class="campo"  disabled="disabled" />
  <input type="text" name="rua" class="campo" disabled="disabled" />
  <input type="text" name="num" class="campo" disabled="disabled" />
  <input type="text" name="compl" class="campo" disabled="disabled" />
  <input type="text" name="bairro" class="campo" disabled="disabled" />
  <input type="text" name="cep" class="campo" disabled="disabled" />
  <input type="text" name="cidade" class="campo" disabled="disabled" />
  <input type="text" name="estado" class="campo" disabled="disabled" />
  
  <input type="button" name="enviar" value="Incluir" id="bt1" class="bt1" onClick="incluir()" />
  <input type="button" name="enviar" value="Alterar" id="bt2" class="bt2" disabled="disabled" />
  <input type="button" name="enviar" value="Excluir" id="bt3" class="bt3" disabled="disabled" />
  <input type="button" name="enviar" value="Fechar" id="bt4" class="bt4" onClick="javascript:window.close()" />
        <input type="button" name="enviar" value="Cancelar" id="bt6" class="bt6" onClick="javascript:window.location.reload()" disabled="disabled" />
  <input type="submit" name="enviar" value="OK" id="bt5" class="bt5" disabled="disabled" />
    </form>

É isso, preciso saber se fiz algo errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos por parte, primeiro no javascript:

 

$.getJSON('busca_cpf.php', {'pesquisa': pesquisa}, function(response) {

a varíavel pesquina NÃO existe, tenho uma sugestão para você:

 

var formCadastro = document.getElementById('cadastro');
function buscaCPF(cpf) { $.getJSON('busca_cpf.php', {'pesquisa': formCadastro['pesquisa'].value}, function(response) {

viu o que aconteceu lá em cima, eu peguei o formulário antes e usei o "formCadastro['pesquisa']" para referenciar o campo de texto pesquisa, e acessei a propriedade "value" do mesmo.

 

Me parece que no javascript é apenas isso, use o inspetor de elementos (Ctrl+Shif+i no Google Chrome) e acesse a aba "Console" (última aba) para ver se acontece mais algum erro.

 

Agora no PHP, como você vai retornar um resultado sem fazer uma consulta SQL antes?

Veja o exemplo:

http://php.net/manual/pt_BR/function.mysql-fetch-assoc.php

Siga os passos:

  1. Conecte ao Mysql (ok, você já fez isso)
  2. Selecione a Database (ok, você também já fez isso)
  3. Execute a consulta SQL SELECT (Você NÃO fez isso)
  4. Use o mysql_fetch_assoc

Mas lembre-se, no seu caso você não deve imprimir uma mensagem "Não foram encontradas linhas, nada para mostrar, assim eu estou saindo", você deve imprimir "false"

Compartilhar este post


Link para o post
Compartilhar em outros sites

no javascript você deve fazer aquela alteração conforme o post anterior

 

No PHP onde está:

 

$cpf = $_GET['pesquisa'];
// procuramos no banco de dados
$cliente = mysql_fetch_array($cliente);

 

deve ficar +/- assim:

 

$cpf = mysql_real_escape_string($_GET['pesquisa']); 

// procuramos no banco de dados
$sql = "SELECT nome, email, coloque_outros_campos_tambem FROM nome_da_tabela WHERE cpf = '$cpf'";
$result = mysql_query($sql);
$cliente = mysql_fetch_assoc($result);

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 2014-2-1 at 17:44, Anderson Danilo disse:

Olá,

 

Você vai ter uma caixa de texto de cpf um botão buscar, e quando você clicar você quer ir para uma página com os dados do cliente?

 

Isso é fácil, mas se você quiser fazer sem sair da página você vai ter que utilizar ajax.

 

Qual a sua dificuldade, consultar os dados do banco de dados ou atualizar a página com ajax

sera que poderia me dar um help desse modo mais saindo da pagina??

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.