Carcleo 4 Denunciar post Postado Dezembro 23, 2012 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
Carcleo 4 Denunciar post Postado Dezembro 23, 2012 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