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>
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.
Pergunta
suicidebilly
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
O Arquivo getClient.php efetua uma busca na tabela utilizando o valor obtido com $_GET.:: 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.:: 2) Na página getClient.php utilizo.:: 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.:: Funciona no Internet Explorer. Mas não funciona no FireFox. 2) Pensei em utilizar utf8_decode no GET para poder efetuar a consulta.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.
Editado por suicidebillyLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.