Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 102
Nome: Erivelton Ferreira
Descrição do site: A melhor web rádio da internet (Radio Killer)
Sexo: Masculino
Localização: Apuiarés - CE
Contato:

Busca PHP MYSQL Insensível a Acentos

09-07-2012 12:27

Bom, minha dúvida é a seguinte.
No meu banco de dados tenho armazenados os dados em Maiúsculo e com acentos
Exemplo: ELABORAÇÃO DE PROJETOS
Uso no meu código de busca, a palavra chave dentro de Coringas % ( LIKE %$busca% )
Quando Busco por elabora, me é exibido o resultado ELABORAÇÃO DE PROJETOS, mais se eu buscar por elaboracao Não mostra nada, se eu Buscar por elaboração, também não mostra nada, se eu buscar por ELABORACAO, Não mostra nada também, se eu buscar por projetos, ele exibe ELABORAÇÃO DE PROJETOS normal...
Procurei em alguns sites, funções em PHP para fazer isso, mais eles apenas removiam os acentos, também tentei usar na consulta um outro charset ou collation, mais ambas tentativas não deram certo...
0
www.radiokiller.com.br
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17416
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca PHP MYSQL Insensível a Acentos

09-07-2012 12:58

Eu adicionei a palavra que informou em um bd aqui, e testei com todos os termos que você indicou através do LIKE. E todos deram resultados positivos, encontraram a palavra.

De qualquer forma, você pode usar uma função que vai converter tanto a palavra buscada quanto o texto do bd para minúsculo e sem acento.

Deixo um exemplo

function retirada($texto) { $texto = strtolower($texto); $texto = preg_replace("[^a-zA-Z0-9 .]", "", strtr($texto, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC ")); return $texto; } $var = "valor buscado"; $query=mysql_query("SELECT * FROM suatabela WHERE ".retirada('essecampo')." LIKE '%".retirada($var)."%'"); while($dados=mysql_fetch_array($query)) { extract($dados); echo "$colunatal<br />"; }

0
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum :rock:
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 102
Nome: Erivelton Ferreira
Descrição do site: A melhor web rádio da internet (Radio Killer)
Sexo: Masculino
Localização: Apuiarés - CE
Contato:

Busca PHP MYSQL Insensível a Acentos

10-07-2012 17:02

Consegui resolver meu problema colocando esse bloco de código no meu arquivo de conexão com o mysql:
mysql_query("SET NAMES 'utf8'"); mysql_query('SET character_set_connection=utf8'); mysql_query('SET character_set_client=utf8'); mysql_query('SET character_set_results=utf8');

E alterei a meta tag para:
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

0
www.radiokiller.com.br
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17416
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca PHP MYSQL Insensível a Acentos

10-07-2012 19:34

;)
0
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum :rock:

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado