Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom Dia,
Estou com o seguinte problema:
tenho uma pagina para marcação de consultas, onde existe um campo text onde o usuário vai digitando e automaticamente vai efetuando busca pela nome no BD, na hora da visualização os nomes tipo João saiam com um caractere diferente, consegui resolver a visualização, porem quando clico no nome ele não me traz os dados do paciente, ao contrário das pessoas que não tem acentos em seu nome, ai sim funciona direitinho, vou colocar os codigos
Aqui envia o que foi digitado e recebe os dados:
<script>
function acao(nome) {
document.getElementById('user_nome').value=nome;
document.getElementById('lista').style.display="none";
document.getElementById('user_nome').focus();
document.getElementById('user_nome').blur();
}
$(document).ready(function() {
$("#user_nome").keyup(function() {
document.getElementById('lista').style.display="block";
$("span#lista").load("dados.php?lista="+$("#user_nome").attr("value").replace(" ", "-"));
});
$("#user_nome").blur(function() {
// atribuimos o nome a var
var nome=$("#user_nome").attr("value");
// carregamos o JSON passando o nome
$.getJSON("dados.php", {name:nome}, function(json){
// pegamos o id obtido na página acima e passamos para o input
$("#loginID").val(json[0].id);
// pegamos o sobrenome obtido na página acima e passamos para o input
$("#user_celular").val(json[0].sobrenome);
});
});
});
</script>
Aqui a pagina que faz a pesquisa:
<?php
error_reporting (E_ALL ^ E_NOTICE);
//problema de acentuacao
mb_internal_encoding("iso-8859-1");
mb_http_output( "iso-8859-1" );
ob_start("mb_output_handler");
header("Content-Type: text/html; charset=ISO-8859-1",true);
$conexao = mysql_connect("localhost", "root", "") or die(mysql_error());
$db = mysql_select_db("openclinic");
if($_GET['lista']) {
extract($_GET);
$selec = "SELECT * FROM usuarios WHERE REPLACE(user_nome, ' ', '-') LIKE '%$lista%' AND nivelID = '3'";
$exec = mysql_query($selec, $conexao) or die(mysql_error());
while($campos=mysql_fetch_array($exec)) {
extract($campos);
echo "<a href=\"javascript://\" onclick=\"javascript:acao('$user_nome')\">$user_nome</a><br>";
}
}
if($_GET['name']) {
extract($_GET);
$selec = "SELECT * FROM usuarios WHERE user_nome='$name'";
$exec = mysql_query($selec, $conexao) or die(mysql_error());
while($campos=mysql_fetch_array($exec)) {
extract($campos);
$Array = Array();
$Array[] = Array("id" => "$usuarioID", "sobrenome" => "$user_celular");
$json_encode = json_encode($Array);
echo $json_encode;
}
}
mysql_close($conexao);
?>
Alguma idéia do que possa estar ocorrendo?
Obrigado
Acho que o problema esta na consulta ...
Pois nomes sem acento vem numa boa ... traz os dados que necessito ... porem qdo tem acento não vem nenhum dado ....
Resolvi ...
alterei a pesquisa no Mysql
$selec = "SELECT * FROM usuarios WHERE user_nome= _utf8 '$name' COLLATE utf8_unicode_ci";
]
Obrigado
então meu amigo, quando você passa por AJAX uns dados ele mexe com a codificação.
exemplo:
João
seria algo como
JoÑo
e isso não existe na sua DB
então tem que padronizar tudo que é passado, padronizar é passar todos os dados para 1 tipo de codificação no caso UTF8. o ISO é mundial então podem ocorrer problemas com certos caracters
tente trabalhar com utf8
na hora que recuperar o nome
você coloca da seguinte maneira
$nome = utf_encode($_GET['nome']);
ou usar o decode..
faça um teste, ao invés de fazer a consulta retorna o que vem do $_GET['nome']