Ir para conteúdo

POWERED BY:

Arquivado

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

velotrol

Tirar Acento no MySQL

Recommended Posts

Gostaria de fazer uma busca no MYSQL onde eu digito uma string sem acento e a consulta retorne com e sem acento.

 

SELECT * FROM tabela WHERE cidade LIKE '% Sao Paulo %'

 

No bd tem São Paulo e Sao Paulo quero que retorne os dois

 

Como resolvo isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostaria de fazer uma busca no MYSQL onde eu digito uma string sem acento e a consulta retorne com e sem acento.

 

SELECT * FROM tabela WHERE cidade LIKE '% Sao Paulo %'

 

No bd tem São Paulo e Sao Paulo quero que retorne os dois

 

Como resolvo isso?

 

Não precisa tirar acentos, dessa forma ele pesquisa normalmente

 

SELECT * FROM tabela WHERE cidade LIKE '%Sao Paulo%'

 

 

só tenta tirar os espaços que tinha antes e depois de Sao Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

não deu!!!

código original está assim:

 

$re = mysql_query(" SELECT * FROM gl_ir WHERE ir_situacao='ativo' AND ir_cidade LIKE '%$rbusca_cidade%'");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque o sql numa variável,

da um echo nela, veja o que aparece, copie o que aparece e entre no phpmyadmin e digite isso no sql.

 

e da um or die (mysql_error());

depois da query.

 

Se depois desses procedimentos padrões não resolver, poste o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta um str_replace

 


<?php 

$texto  = "Á máríá gostá dó jóãó"; //Coloquei acento em todas as vogais ^^ e uma frase infantil ¬¬
$newTxt = str_replace(array('á','í','ó','ã','Á'),array('a','i','o','a','a'),$texto);

echo $newTxt;

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu problema é que no banco esta com acento.... eu quero digitar sem acento e ver o que esta no banco com acento.

Quando eu digito "criciúma" retorna "Criciúma".

Quando eu digito "criciuma"(sem acento) num retorna nada.

 

 

No banco pelo phpmyadmin esta assim Criciúma não sei se isso interfere já que quando retorna aparece Criciúma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que se você usar o collation utf8_general_ci você irá conseguir isso de forma transparente e fácil.

 

VEja:

http://dev.mysql.com/doc/refman/5.0/en/charset-collation-implementations.html

 

Collations for Unicode multi-byte character sets

 

Some of these collations are based on the Unicode Collation Algorithm (UCA), others are not.

 

Non-UCA collations have a one-to-one mapping from character code to weight. In MySQL, such collations are case insensitive and accent insensitive. utf8_general_ci is an example: 'a', 'A', 'À', and 'á' each have different character codes but all have a weight of 0x0041 and compare as equal.

 

mysql> SET NAMES 'utf8' COLLATE 'utf8_general_ci';

Query OK, 0 rows affected (0.00 sec)

 

mysql> SELECT 'a' = 'A', 'a' = 'À', 'a' = 'á';

+-----------+-----------+-----------+

| 'a' = 'A' | 'a' = 'À' | 'a' = 'á' |

+-----------+-----------+-----------+

| 1 | 1 | 1 |

+-----------+-----------+-----------+

1 row in set (0.06 sec)

 

Pessoas com problemas inversos ao seu:

 

http://stackoverflow.com/questions/2044268/looking-for-case-insensitive-mysql-collation-where-a-a

 

http://stackoverflow.com/questions/500826/how-to-conduct-an-accent-sensitive-search-in-mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Man pelo que eu conheço de mysql você não vai conseguir fazer isso por SELECT, é mais facíl você fazer um tratamento de string para ele armazenar no banco de dados somente da maneira que você quer por exemplo, usa um replace que o nosso amigo citou acima e se ele digitar maiscula ou minuscula não vai fazer diferença no banco de dados vai sempre estar São Paulo, dessa maneira sempre vai estar no banco o "S" maisculo e o "P" e o "ã" então por exemplo ficaria assim.

 

$texto  = "sao paulo"; //digite tudo minusculo e sem acentuação
$newTxt = str_replace(array('s','p','ã'),array('S','P','ã'),$texto); //aqui ele vai substituir "s" por "S" e assim por diante

 

A aproveitei o exemplo do nosso amigo _Rafhael_

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

#10... é errôneo afirmar isso..

 

 

o correto recomendado está no post #9..

 

utf8_general_ci suporta diacritic

 

em suma, há suporte tanto para "case insensitive", o qual é especificado no próprio nome "_ci" e "accent insensitive" que também pode ser representado por "_ai"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera quero agradecer a força, mas resolvi o problema. Já que eu não estava dando certo fiz dessa forma aqui:

 

//header('Content-Type: text/html; charset=utf-8'); //essa parte não foi necessária.

//conexão bd

mysql_connect($host, $user, $senha);

mysql_select_db($bd);

 

//acrescentei essa parte após a conexão com bd como está abaixo: Agora quando cadastro aparece no banco tudo com acento certinho sem precisar fazer mais nada no código.

 

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″);

 

//Único problema é que: o que já estava cadastrado agora retornam com os símbolos igual como esta no banco, mas como o site ainda num está no ar resolve o problema.

//..........

//Não esquecendo de ver se o meta tag está assim:

<meta http-equiv="content-type" content="text/html;charset=utf-8" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

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″);

 

isso resolve, mas ainda assim o seu banco não está configurado com utf8 "ci ai".

 

recomendo que corrija o collation e charset no banco e tabelas. Assim não precisará mais ter que usar essas querys para cada conexão..

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.