caike245 0 Denunciar post Postado Abril 16, 2014 Boa noite, estou fazendo um site para uma empresa de um parente, mas depois do site já estar funcionando, descubri um erro na minha busca. Quando faço uma busca por nome fantasia não mostra nenhum resultado que tenha acentos um exemplo claro é Ótica que se digitado ótica (com acento) ou otica(sem acento) não aparece na busca...pesquisando pela internet descobri que pelo jeito foi um erro meu pois eu teria que ter feito uma especie de conversão antes de salvar no banco, mais eu não sabia (e ainda não entendi para ser sincero). Links do site: Busca por nome:http://www.guiacomercialpratico.com.br/bfantasia.php Busca por atividade:http://www.guiacomercialpratico.com.br/batv.php O banco já esta com cerca de 1000 registros o que seria complicado apagar e refazer, gostaria da ajuda de vocês mais experientes se tem algo que eu poça fazer para concertar este erro na busca. Nota: já tentei alterar o registro no banco. mas se eu deixar escrito corretamente no banco (alterando no phpmyadmin) no navegador fica estranho aparece uns "ÃÕ~", então creio que não da para fazer uma alteração direta :/ Agradeço desde já a ajuda, se precisarem de mais informações por favor avisem. Compartilhar este post Link para o post Compartilhar em outros sites
mau rs 37 Denunciar post Postado Abril 16, 2014 Isso aí é problema de charset pelo jeito. Você está usando PDO? Tente especificar ao conectar no banco de dados o charset da conexão pra ver se resolve Compartilhar este post Link para o post Compartilhar em outros sites
caike245 0 Denunciar post Postado Abril 16, 2014 Isso aí é problema de charset pelo jeito. Você está usando PDO? Tente especificar ao conectar no banco de dados o charset da conexão pra ver se resolve Então...para falar a verdade poderia me dar um exemplo ou me indicar algum link de como fazer pois tentei usar alguns codigos na busca sql mais acabou que não resolveu, não sei se fiz certo mas o problema continuou. Compartilhar este post Link para o post Compartilhar em outros sites
mau rs 37 Denunciar post Postado Abril 16, 2014 Mostre como você está fazendo a conexão com o banco de dados. Compartilhar este post Link para o post Compartilhar em outros sites
Edivaldo Lins Macedo 0 Denunciar post Postado Abril 16, 2014 Se for o que estou pensabdo faz a troca do valor do charset que domina os caracteres. <head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> </head> Espero ter ajudado Edivaldo Lins Macdo Compartilhar este post Link para o post Compartilhar em outros sites
caike245 0 Denunciar post Postado Abril 16, 2014 Se for o que estou pensabdo faz a troca do valor do charset que domina os caracteres. <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> </head> Espero ter ajudado Edivaldo Lins Macdo Então, mais creio que este seja para resolver problemas de visualização dos dados retornados da consulta no DB, no meu caso o DB não retorna os dados pois não encontra por causa dos acentos. Mostre como você está fazendo a conexão com o banco de dados. Segue a conexão: <?php $conexao = mysql_connect ("localhost" , "root") or die ("Falha conexao DB"); $db = mysql_select_db("bdguia",$conexao) or die ("Banco Inesistente"); ?> Alterei os dados da conexão para local somente para não divulgar informações do servidor, mas minha conexão eu faço com um arquivo php "conexao.php" e dou include dele em todas as paginas. segue abaixo a busca caso ajude. <?php $bnome ="SELECT atvemp.codatv ,atvemp.codemp,empresas.codemp , empresas.nomefantasia, empresas.tel, empresas.anunciante, empresas.end,empresas.bairro, endereco.nomeend, endereco.codend, bairros.nomebairro, bairros.codbairro, empresas.numero, empresas.site, cidades.codcid, empresas.cidade, cidades.nomecid, empresas.email, empresas.facebook FROM atvemp, empresas, endereco, bairros, cidades WHERE empresas.nomefantasia LIKE _utf8 '%$var1%$var2%' COLLATE utf8_unicode_ci and atvemp.codemp=empresas.codemp and empresas.end=endereco.codend and empresas.bairro=bairros.codbairro and cidades.codcid=empresas.cidade Group by empresas.nomefantasia LIMIT 20 "; Compartilhar este post Link para o post Compartilhar em outros sites
mau rs 37 Denunciar post Postado Abril 16, 2014 Tente isso <?php $conexao = mysql_connect ("localhost" , "root") or die ("Falha conexao DB"); mysql_set_charset('utf8',$conexao); $db = mysql_select_db("bdguia",$conexao) or die ("Banco Inesistente"); ?> Compartilhar este post Link para o post Compartilhar em outros sites
William Avelar 15 Denunciar post Postado Abril 16, 2014 você pode alterar a definição da codificação dos dados, “collate”. é so usar antes do LIKE collate Latin1_General_CI_AI o final tem AI, que significa “Accent Insensitive”. É o que reconhecerá com ou sem acento Compartilhar este post Link para o post Compartilhar em outros sites
caike245 0 Denunciar post Postado Abril 16, 2014 Tente isso <?php $conexao = mysql_connect ("localhost" , "root") or die ("Falha conexao DB"); mysql_set_charset('utf8',$conexao); $db = mysql_select_db("bdguia",$conexao) or die ("Banco Inesistente"); ?> Mau RS eu tentei desse jeito mas não resolveu e ainda bugou algumas palavras exemplo: Cosméticos ficou CosmÃticos :/ você pode alterar a definição da codificação dos dados, “collate”. é so usar antes do LIKE collate Latin1_General_CI_AI o final tem AI, que significa “Accent Insensitive”. É o que reconhecerá com ou sem acento ficou desse jeito WHERE empresas.nomefantasia LIKE _utf8 '%$var1%$var2%' COLLATE Latin1_General_CI_AI and atvemp.codemp=empresas.codemp and empresas.end=endereco.codend and empresas.bairro=bairros.codbairro and cidades.codcid=empresas.cidade Só que não resolveu e ainda não faz nenhuma busca (até as que funcionava antes não funciona mais) Compartilhar este post Link para o post Compartilhar em outros sites
mau rs 37 Denunciar post Postado Abril 17, 2014 o collate que ele quis dizer era alterar da tabela, e não na consulta. Existem vários sites na internet com dicas de charset, não sei se posso postar link de terceiros aqui, vou postar e se for errado algum admin edit por favor: http://rubsphp.blogspot.com.br/2011/07/problemas-com-charset-nunca-mais.html Aí tem algumas dicas. Compartilhar este post Link para o post Compartilhar em outros sites
William Avelar 15 Denunciar post Postado Abril 17, 2014 Mau RS eu tentei desse jeito mas não resolveu e ainda bugou algumas palavras exemplo: Cosméticos ficou CosmÃticos :/ ficou desse jeito WHERE empresas.nomefantasia LIKE _utf8 '%$var1%$var2%' COLLATE Latin1_General_CI_AI and atvemp.codemp=empresas.codemp and empresas.end=endereco.codend and empresas.bairro=bairros.codbairro and cidades.codcid=empresas.cidade Só que não resolveu e ainda não faz nenhuma busca (até as que funcionava antes não funciona mais) é antes do LIKE e não depois Compartilhar este post Link para o post Compartilhar em outros sites
caike245 0 Denunciar post Postado Abril 19, 2014 é antes do LIKE e não depois vou testar depois posto se deu certo. Compartilhar este post Link para o post Compartilhar em outros sites
MSBaroni 1 Denunciar post Postado Abril 19, 2014 Usa essa paradinha utf8_encode($ln['nomedavariavel']); O de cima vai mostrar dados do banco codificado para a linguagem da página; utf8_decode($_POST['nomedavariavel']); E este na hora da postagem no banco de dados ele vai codificar para a linguagem do banco. Depois é só modificar ao ponto que as coisas fiquem do seu jeito! Compartilhar este post Link para o post Compartilhar em outros sites