Estou com um problema que já tomou boa parte do meu dia... vou tentar encurtar ao máximo Utilizo uma função em AJAX que faz uma busca no banco de dados e "autocompleta" os demais campos (Endereço, Telefone e etc) ao se preencher o nome do cliente corretamente. O valor para consulta é obtido pelo conteúdo de um textfield chamado clientID function getClientData()
{
var clientId = document.getElementById('clientID').value;
if(clientId!=currentClientID){
currentClientID = clientId
ajax.requestFile = 'getClient.php?getClientId='+clientId;
ajax.onCompletion = showClientData;
ajax.runAJAX();
}
}
O Arquivo getClient.php efetua uma busca na tabela utilizando o valor obtido com $_GET.::
$res = mysql_query("SELECT * FROM tabela WHERE cliente='".$_GET['getClientId']."'") or die(mysql_error());
Se o campo não tiver nenhum acento funciona perfeitamente (FireFox, Ie, Chrome, etc), porém, se tiver algum acento no campo de busca nenhum resultado é retornado, verifiquei como chegava (ou como era exibido) o resultado do $GET na página de consulta (getClient.php) e as palavras com acento chegam truncadas, por isso a busca dava errado, fiz então o seguinte.::
1) Na página onde estão os campos TextField utilizo.::
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br">
<head>
2) Na página getClient.php utilizo.::
header("Content-Type: text/html; charset=ISO-8859-1",true);
Isso faz com que o resultado venha acentuado corretamente, mas aí que entra o problema que não consigo entender.::
1) Se dentro do getClient.php eu tentar pegar o valor do GET para consulta utilizando.::
$res = mysql_query("SELECT * FROM tabela WHERE cliente='".$_GET['getClientId']."'") or die(mysql_error());
Funciona no Internet Explorer. Mas não funciona no FireFox.
2) Pensei em utilizar utf8_decode no GET para poder efetuar a consulta.
$res = mysql_query("SELECT * FROM tabela WHERE cliente='".utf8_decode($_GET['getClientId'])."'") or die(mysql_error()); Fazendo isso funciona no FireFox mas deixa de funcionar no Internet Explorer. -------- Pensei em uma solução (Ao meu ver porca) que funciona parcialmente, utilizo uma função em PHP que verifica qual o navegador e utiliza a versão com ou sem o decode, porém isso não funciona em outros navegadores como Chrome e Opera. Alguém sabe me explicar porque isso acontece ? Porque quando funciona em um navegador não funciona em outro ??? As vezes o que mais me tira a vontade de desenvolver sistemas elaborados é esta falta de compatibilidade entre os navegadores, a cada novo navegador que lançam me bate um pensamento que é um problema a mais pra lidar na hora de desenvolver algo... passo horas tentando deixar algo compatível com um e perco a compatibilidade com o outro... acredito que outros também pensem assim... mas enfim... agradeço muito qualquer ajuda nesse problema ! Obs.: Todos os campos da minha tabela estão em utf8_general_ci e todos os headers estão devidamente setados, já tentei alterar os headers para UTF8 mas os acentos chegam truncados. Já tentei usar url encode mas o erro no final é o mesmo.