Ir para conteúdo

POWERED BY:

Arquivado

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

sfonseca45

PHP + JSON acentuação

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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']

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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.