É possivel executar uma query (ex : select no banco de dados) dentro do Ajax ?

03/04/2019

0

Boa tarde.
Resumindo a questão:
Tenho uma janela php , onde tenho alguns itens e uma janela modal. Ao clicar em determinado botão o modal é aberto.
Nesse modal , tenho 2 formulários. No primeiro , tem um único campo onde a pessoa irá digitar um rg . Através de uma query
vou verificar se esse rg já está cadastrado. Se sim , os campos do segundo form deverão ser preenchidos com os dados vindos do banco de dados. Caso contrário a pessoa preencherá o segundo formulário e fará o cadastro.

Agora a questão é a seguinte : Quando a pessoa clica no meu botão para verificar se o rg existe , é acionada uma função (Ajax) que é responsável por capturar o que foi digitado e preencher os campos do segundo formulário, mas isso só deve ocorrer , se o que foi digitado já existir no banco de dados . Então , ao clicar nesse botão, seria necessário , ao acionar a Função e fazer uma query no banco de dados para ver se o dado digitado existe ou não.
Aí é que me enrolo todo.... o select no banco de dados eu seu fazer , mas coloco ele dentro da minha função ? fiz diversas tentativas , porém sem sucesso..
Jucelio

Jucelio

Responder

Posts

03/04/2019

Jucelio

Boa tarde.
Resumindo a questão:
Tenho uma janela php , onde tenho alguns itens e uma janela modal. Ao clicar em determinado botão o modal é aberto.
Nesse modal , tenho 2 formulários. No primeiro , tem um único campo onde a pessoa irá digitar um rg . Através de uma query
vou verificar se esse rg já está cadastrado. Se sim , os campos do segundo form deverão ser preenchidos com os dados vindos do banco de dados. Caso contrário a pessoa preencherá o segundo formulário e fará o cadastro.

Agora a questão é a seguinte : Quando a pessoa clica no meu botão para verificar se o rg existe , é acionada uma função (Ajax) que é responsável por capturar o que foi digitado e preencher os campos do segundo formulário, mas isso só deve ocorrer , se o que foi digitado já existir no banco de dados . Então , ao clicar nesse botão, seria necessário , ao acionar a Função e fazer uma query no banco de dados para ver se o dado digitado existe ou não.
Aí é que me enrolo todo.... o select no banco de dados eu seu fazer , mas coloco ele dentro da minha função ? fiz diversas tentativas , porém sem sucesso..



Função Ajax:

function chamarPhpAjax() {



var rg_pesquisa = document.getElementById("rg_pesquisa").value;
var rg_banco = "<?php echo $teste ;?>";
window.alert(rg_banco);
if((rg_banco)==(rg_pesquisa) ){
var nome = "<?php echo $rows_consulta_rg ['nome_membro'];?>";
var telefone="<?php echo $rows_consulta_rg ['telefone'];?>";
var rg="<?php echo $rows_consulta_rg ['rg'];?>";
document.getElementById('nome_membro').value = nome;
document.getElementById('telefone_membro').value = telefone;
document.getElementById('rg_membro').value = rg;

} else{
window.alert('RG não encontrado');

}

}
Responder

03/04/2019

Jonatan Lima

Boa noite, primeiro acho importante você limitar o input para receber o tamanho correto do rg, pois você poderá fazer a requisição ajax só depois que o campo alcançar o tamanho correto.

  <input type="text" id="rg" maxlength="9" onkeyup="funcaoAjax()">
  
  <script>
    function funcaoAjax() {
      var elementRg = document.getElementById("rg");
      var rgValue = elementRg.value;
      var rgLength = rgValue.length
      
      if (rgLength == 9) {
        console.log("ajax");
      }
    }
    
Responder

04/04/2019

Jucelio

Boa noite, primeiro acho importante você limitar o input para receber o tamanho correto do rg, pois você poderá fazer a requisição ajax só depois que o campo alcançar o tamanho correto.

  <input type="text" id="rg" maxlength="9" onkeyup="funcaoAjax()">
  
  <script>
    function funcaoAjax() {
      var elementRg = document.getElementById("rg");
      var rgValue = elementRg.value;
      var rgLength = rgValue.length
      
      if (rgLength == 9) {
        console.log("ajax");
      }
    }
    


Bom dia Jonatan... tudo bem .. estou adaptando meu código . Obrigado.
Responder

04/04/2019

Jucelio

Coloquei alguns comentários para facilitar o entendimento.
Peço que não reparem os erros , pois realmente sou iniciante em php e nunca fiz nada utilizando Ajax..

Botão:
<button type="button" id="chama_modal_agendar" maxlength="9" class="btn btn btn-xs btn-danger" onclick="return chamarPhpAjax();" >Pesquisar</button>


Ajax:

script type="text/javascript">


function chamarPhpAjax() {

var rg_pesquisa = document.getElementById("rg_pesquisa").value;//captura o rg digitado
var rgLength = rg_pesquisa.length; // verifica o tamanho do rg
if (rgLength == 9) {
console.log("ajax");
}

// é feita a query no banco utilizando o rg_rgLength (rg digitado pelo usuário) . Essa é a dúvida . Como fazer essa query...


var rg_banco = //recebe o resultado da query.

if( (rg_banco)==(rgLength) )//compara a o resultado da query com o rg digitado no campo text. Poderia ter usuado o isset, mas não sei se pode usar aqui.
{
var nome = "<?php echo $rows_consulta_rg ['nome_membro'];?>";
var telefone="<?php echo $rows_consulta_rg ['telefone'];?>";
var rg="<?php echo $rows_consulta_rg ['rg'];?>";
document.getElementById('nome_membro').value = nome;
document.getElementById('telefone_membro').value = telefone;
document.getElementById('rg_membro').value = rg;

} else{
window.alert('RG não encontrado');

}

}



</script>
Responder

05/04/2019

Jucelio

A idéia principal , como eu disse no início, é a pessoa digitar um rg no primeiro formulário e , se esse rg já estiver cadastrado, o segundo é preenchido com os dados relacionados a esse rg. Do jeito que o código está , isso não acontece e também não estava retornando erro . Utilizei então o inspecionar do Google Chrome e percebi que quando digito o rg e clico em pesquisar , é dado o seguinte erro : Uncaught ReferenceError: chamarPhpAjax is not defined at HTMLButtonElement.onclick.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar