Ir para conteúdo

Arquivado

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

Carcleo

php, ajax e xml

Recommended Posts

Pessoal.

 

Bom Dia!

 

Primeiramente quero deseja um Feliz Natal e um próspero ano novo a todos!

 

Lembram-se daquele script de preencher o combo cidades por estado em php, ajax e xml?

 

Pois bem, estou usando ele para preencher uma textbox.

 

No php, fiz a seguindo query:

 SELECT     
clientes_representantes.dcto_clientes, 
clientes_representantes.nome_clientes, 
clientes_representantes.endereco_clientes, 
clientes_representantes.numero_clientes, 
clientes_representantes.complemento_clientes, 
clientes_representantes.bairro_clientes, 
clientes_representantes.cidade_clientes, 
   cidades.nome,
clientes_representantes.estado_clientes, 
clientes_representantes.cep_clientes, 
clientes_representantes.email_clientes, 
clientes_representantes.tel_clientes, 
clientes_representantes.cel_clientes
FROM  clientes_representantes 
inner join cidades ON clientes_representantes.cidade_clientes=cidades.id
WHERE clientes_representantes.dcto_clientes like 'car%'
ORDER BY clientes_representantes.nome_clientes          

Isso, auto preenche a text box com a primeira combinação Car(los).

Se, por acaso, eu colocar em vez de "Car", "Cor", ele não achará combinação e resultará vazio no ajax.

Mas quando, ao invés de usar letras, usar números como é o caso de cpf, aí ele retorna o ajax com a primeira combinação mesmo que não exista.

Por exemplo:

 SELECT     
clientes_representantes.dcto_clientes, 
clientes_representantes.nome_clientes, 
clientes_representantes.endereco_clientes, 
clientes_representantes.numero_clientes, 
clientes_representantes.complemento_clientes, 
clientes_representantes.bairro_clientes, 
clientes_representantes.cidade_clientes, 
   cidades.nome,
clientes_representantes.estado_clientes, 
clientes_representantes.cep_clientes, 
clientes_representantes.email_clientes, 
clientes_representantes.tel_clientes, 
clientes_representantes.cel_clientes
FROM  clientes_representantes 
inner join cidades ON clientes_representantes.cidade_clientes=cidades.id
WHERE clientes_representantes.dcto_clientes like '75%'
ORDER BY clientes_representantes.nome_clientes          

Não há nenhum cpf cadastrado iniciando por 75. O que tem mais próximo é 78 e ai ele preenche a textbox com ele.

 

O que fazer para corrigira isso?.

Onde será que esta o erro:

Meu código completo

php

<?php 
include("../../../global/config/conexao.php"); 
include("../../../global/funcoes_php/formata_cpf.php"); 
include("../../../global/funcoes_php/formata_cnpj.php"); 
include("../../../global/funcoes_php/formata_cep.php"); 
include("../../../global/funcoes_php/formata_tel.php"); 

$_POST["cliente"] =  str_replace( ".", "", $_POST["cliente"]);
$_POST["cliente"] =  str_replace( "-", "", $_POST["cliente"]);
$_POST["cliente"] =  str_replace( "/", "", $_POST["cliente"]);


$sql_string = "
 SELECT     
clientes_representantes.dcto_clientes, 
clientes_representantes.nome_clientes, 
clientes_representantes.endereco_clientes, 
clientes_representantes.numero_clientes, 
clientes_representantes.complemento_clientes, 
clientes_representantes.bairro_clientes, 
clientes_representantes.cidade_clientes, 
   cidades.nome,
clientes_representantes.estado_clientes, 
clientes_representantes.cep_clientes, 
clientes_representantes.email_clientes, 
clientes_representantes.tel_clientes, 
clientes_representantes.cel_clientes
FROM  clientes_representantes 
inner join cidades ON clientes_representantes.cidade_clientes=cidades.id
WHERE clientes_representantes.dcto_clientes like '".$_POST["cliente"]."%' 
ORDER BY clientes_representantes.nome_clientes";            

$sql_query = $conexao->query($sql_string);  
$row = $sql_query->num_rows; 

//VERIFICA SE VOLTOU ALGO 

if($row) 
{                
  //XML
  $xml  = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
  $xml .= "<clientes>\n";               

  //PERCORRE ARRAY            
  while(list(
$dcto_clientes, 
$nome_clientes, 
$endereco_clientes, 
$numero_clientes, 
$complemento_clientes, 
$bairro_clientes, 
$cidade_clientes, 
$cidade_nome, 
$estado_clientes, 
$cep_clientes, 
$email_clientes, 
$tel_clientes, 
$cel_clientes   
             )=$sql_query->fetch_row())
  {
  if (strlen($dcto_clientes) == 11) {$dcto_clientes=formata_cpf($dcto_clientes);}
  elseif (strlen($dcto_clientes) == 14) {$dcto_clientes=formata_cnpj($dcto_clientes);}

  $cep_clientes=formata_cep($cep_clientes);
     $tel_clientes=formata_tel($tel_clientes);

     if (is_null($complemento_clientes) or $complemento_clientes=="")
  {
    $complemento_clientes="Não Informado";
  }	   

  if ($cel_clientes!="")
  {
    $cel_clientes=formata_tel($cel_clientes);
  }
  elseif (is_null($cel_clientes) or $cel_clientes=="")
  {
    $cel_clientes="Não Informado";
  }	   

     $xml .= "<cliente>\n";     
     $xml .= "<dcto_clientes>".$dcto_clientes."</dcto_clientes>\n";                  
     $xml .= "<nome_clientes>".$nome_clientes."</nome_clientes>\n";         
     $xml .= "<endereco_clientes>".$endereco_clientes."</endereco_clientes>\n";                  
     $xml .= "<numero_clientes>".$numero_clientes."</numero_clientes>\n";         
     $xml .= "<complemento_clientes>".$complemento_clientes."</complemento_clientes>\n";                  
     $xml .= "<bairro_clientes>".$bairro_clientes."</bairro_clientes>\n";         
     $xml .= "<cidade_clientes>".$cidade_clientes."</cidade_clientes>\n";                  
     $xml .= "<cidade_nome>".$cidade_nome."</cidade_nome>\n";                  
     $xml .= "<estado_clientes>".$estado_clientes."</estado_clientes>\n";         
     $xml .= "<cep_clientes>".$cep_clientes."</cep_clientes>\n";                  
     $xml .= "<email_clientes>".$email_clientes."</email_clientes>\n";         
     $xml .= "<tel_clientes>".$tel_clientes."</tel_clientes>\n";                  
     $xml .= "<cel_clientes>".$cel_clientes."</cel_clientes>\n";         
     $xml .= "</cliente>\n";    
  }

  $xml.= "</clientes>\n";

  header("Content-type: application/xml; charset=utf-8");
  echo $xml; 
}
?>

Ajax

// JavaScript Document
 function DadosCliente_Dcto(valor, form_get, campo) {
     //verifica se o browser tem suporte a ajax
  try {
        ajax = new ActiveXObject("Microsoft.XMLHTTP");
     } 
     catch(e) {
        try {
           ajax = new ActiveXObject("Msxml2.XMLHTTP");
        }
     catch(ex) {
           try {
              ajax = new XMLHttpRequest();
           }
        catch(exc) {
              alert("Esse browser não tem recursos para uso do ajax");
              ajax = null;
           }
        }
     }
  //se tiver suporte ajax
  if(ajax) 
  {
	 if (event.keyCode==8)
	 {
		antes = document.getElementById("dcto_"+form_get+"_clientes").selectionStart;

		document.getElementById("nome_"+form_get+"_clientes").value="";
		document.getElementById("endereco_"+form_get+"_clientes").value="";
		document.getElementById("numero_"+form_get+"_clientes").value="";
		document.getElementById("complemento_"+form_get+"_clientes").value="";
		document.getElementById("bairro_"+form_get+"_clientes").value="";
		document.getElementById("cidade_"+form_get+"_clientes").options[0].value="";
		document.getElementById("cidade_"+form_get+"_clientes").options[0].text="";
		document.getElementById("estado_"+form_get+"_clientes").options[0].value="";
		document.getElementById("estado_"+form_get+"_clientes").options[0].text="";
		document.getElementById("cep_"+form_get+"_clientes").value="";
		document.getElementById("email_"+form_get+"_clientes").value="";
		document.getElementById("tel_"+form_get+"_clientes").value="";
		document.getElementById("cel_"+form_get+"_clientes").value="";

		document.getElementById("nome_"+form_get+"_clientes").selectionStart = antes;			
	 } 	  
        else if(event.keyCode!=37 && event.keyCode!=39 && event.keyCode!=46)
	 {
     //deixa apenas o elemento 1 no text, os outros são excluídos
	 idOpcao  = document.getElementById(campo);
     ajax.open("POST", "global/funcoes_php/buscacliente.php", true);
	 ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

	 ajax.onreadystatechange = function() 
	 {
           //enquanto estiver processando...emite a msg de carregando
		if(ajax.readyState == 1) {  idOpcao.innerHTML = "Carregando...!";         }
		//após ser processado - chama função processXMLClientes que vai varrer os dados
           if(ajax.readyState == 4 ) 
		{
		   if(ajax.responseXML) { processXMLClientes_dcto(ajax.responseXML,form_get); }
		   else { idOpcao.innerHTML = "Não há Clientes";  }
           }
        }
	 //passa o código do estado escolhido
     var params = "dcto="+valor;
        ajax.send(params);
 }
  }

  function processXMLClientes_dcto(obj,form_get)
  {
  antes = document.getElementById("dcto_"+form_get+"_clientes").selectionStart;

     //pega a tag cidade
     var dataArray   = obj.getElementsByTagName("cliente");
  //total de elementos contidos na tag cidade
  if(dataArray.length > 0) 
  {
var dcto_clientes    =  dataArray[0].getElementsByTagName("dcto_clientes")[0].firstChild.nodeValue;
var nome_clientes =  dataArray[0].getElementsByTagName("nome_clientes")[0].firstChild.nodeValue;
var endereco_clientes    =  dataArray[0].getElementsByTagName("endereco_clientes")[0].firstChild.nodeValue;
var numero_clientes =  dataArray[0].getElementsByTagName("numero_clientes")[0].firstChild.nodeValue;
var complemento_clientes    =  dataArray[0].getElementsByTagName("complemento_clientes")[0].firstChild.nodeValue;
var bairro_clientes =  dataArray[0].getElementsByTagName("bairro_clientes")[0].firstChild.nodeValue;
var cidade_clientes    =  dataArray[0].getElementsByTagName("cidade_clientes")[0].firstChild.nodeValue;
var cidade_nome    =  dataArray[0].getElementsByTagName("cidade_nome")[0].firstChild.nodeValue;
var estado_clientes =  dataArray[0].getElementsByTagName("estado_clientes")[0].firstChild.nodeValue;
var cep_clientes    =  dataArray[0].getElementsByTagName("cep_clientes")[0].firstChild.nodeValue;
var email_clientes =  dataArray[0].getElementsByTagName("email_clientes")[0].firstChild.nodeValue;
var tel_clientes    =  dataArray[0].getElementsByTagName("tel_clientes")[0].firstChild.nodeValue;
var cel_clientes =  dataArray[0].getElementsByTagName("cel_clientes")[0].firstChild.nodeValue;

if (dcto_clientes.length==11) 
{
	document.getElementById("label_dcto_"+form_get+"_clientes").innerHTML="CPF";
}
else if (dcto_clientes.length==14) 
{
	document.getElementById("label_dcto_"+form_get+"_clientes").innerHTML="CNPJ";
}

idOpcao.innerHTML = "Selecione uma das opções abaixo>>";

document.getElementById("dcto_"+form_get+"_clientes").value=dcto_clientes;
document.getElementById("nome_"+form_get+"_clientes").value=nome_clientes;
document.getElementById("endereco_"+form_get+"_clientes").value=endereco_clientes;
document.getElementById("numero_"+form_get+"_clientes").value=numero_clientes;
document.getElementById("complemento_"+form_get+"_clientes").value=complemento_clientes;
document.getElementById("bairro_"+form_get+"_clientes").value=bairro_clientes;
document.getElementById("cidade_"+form_get+"_clientes").options[0].value=cidade_clientes;
document.getElementById("cidade_"+form_get+"_clientes").options[0].text=cidade_nome;
document.getElementById("estado_"+form_get+"_clientes").options[0].value=estado_clientes;
document.getElementById("estado_"+form_get+"_clientes").options[0].text=estado_clientes;
document.getElementById("cep_"+form_get+"_clientes").value=cep_clientes;
document.getElementById("email_"+form_get+"_clientes").value=email_clientes;
document.getElementById("tel_"+form_get+"_clientes").value=tel_clientes;
document.getElementById("cel_"+form_get+"_clientes").value=cel_clientes;
  }
  else 
  {
    //caso o XML volte vazio, printa a mensagem abaixo
	idOpcao.innerHTML = "Não há Clientes para essa pesquisa";
document.getElementById("nome_"+form_get+"_clientes").value="";
document.getElementById("endereco_"+form_get+"_clientes").value="";
document.getElementById("numero_"+form_get+"_clientes").value="";
document.getElementById("complemento_"+form_get+"_clientes").value="";
document.getElementById("bairro_"+form_get+"_clientes").value="";
document.getElementById("cidade_"+form_get+"_clientes").options[0].value="";
document.getElementById("cidade_"+form_get+"_clientes").options[0].text="";
document.getElementById("estado_"+form_get+"_clientes").options[0].value="";
document.getElementById("estado_"+form_get+"_clientes").options[0].text="";
document.getElementById("cep_"+form_get+"_clientes").value="";
document.getElementById("email_"+form_get+"_clientes").value="";
document.getElementById("tel_"+form_get+"_clientes").value="";
document.getElementById("cel_"+form_get+"_clientes").value="";
 }	  
 	document.getElementById("dcto_"+form_get+"_clientes").selectionStart = antes;	
}
}

Obrigado à quem puder ajudar!

Carlos Rocha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que localizei o erro.

 

Quando envio do ajax para o php por post:

.......
    var params = "dcto="+valor;
    alert(params);
    ajax.send(params);
 }
......

Adicionei um alert para verificar o que estava sendo enviado por post. A variável params esta com valor correto.

 

Agora. Como eu posso testar o que é que esta chegando lá no php?

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.