Ir para conteúdo

POWERED BY:

Arquivado

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

renatagramos

[Resolvido] Acentuação em maiúscula no banco

Recommended Posts

Pessoal,

 

estou usando o 'mb_strtoupper' para inserir dados em letra maiúscula no banco. Acontece que isso nem sempre funciona com acentuação... as vezes fia assim: TóTâL SêM LíMíTé.

 

Como resolvo isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

renatagramos, geralmente temos que tratar isso antes de enviar no Banco pela nossa linguagem server. Tipo em PHP eu faço um metodo que substitui palavras com acentuação para maíusculas, pois as funções só altera para maiúsculas letras sem acentuação.

Assim remendo a você criar um metodo para tratar isso antes de salvar os dados no Banco.

Porém no PHP 5.3.5 que utilizo esta função do PHP e a strtoupper alteram os caracteres acentuados para maiúsculas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

renatagramos, geralmente temos que tratar isso antes de enviar no Banco pela nossa linguagem server. Tipo em PHP eu faço um metodo que substitui palavras com acentuação para maíusculas, pois as funções só altera para maiúsculas letras sem acentuação.

Assim remendo a você criar um metodo para tratar isso antes de salvar os dados no Banco.

Porém no PHP 5.3.5 que utilizo esta função do PHP e a strtoupper alteram os caracteres acentuados para maiúsculas.

 

Olá, Wess.

 

Eu faço assim:

 

Pego input e já adiciono na variável com o comando mb_strtoupper... Só que nem sempre funciona.

 

$contrato_tipo = mb_strtoupper($_POST['contrato_tipo']);

 

(o strtoupper não converte acentuação, só o mb_strtoupper faz isso)

Compartilhar este post


Link para o post
Compartilhar em outros sites

renatagramos, você já tentou passar a codificação no segundo parametro da função mb_strtoupper? Tipo:

$contrato_tipo = mb_strtoupper($_POST['contrato_tipo'], 'UTF-8');

Veja se isso lhe ajude, caso contrário seria igual eu lhe falei. Criar uma função para substituir os caracteres com acentos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wess,

 

Não deu certo. Dá erro de sintaxe e não consigo resolver.

renatagramos, qual a sua versão do PHP? Sua extensão MBSTRING está habilitado e configurado. Veja como está este no PHPINFO caso não saiba como usar o PHPINFO:

- Crie um arquivo PHP no seu servidor com a seguinte linha de comando:

<?php
   phpinfo();
?>

Estou postando o link da imagem da parte do MBSTRING do meu servidor (PHP 5.3.5) que funcionou a transformação para maiúscula com a função mb_strtoupper.

Imagem MBSTRING

Caso depois disso tudo (que acho que pode ser uma configuração do PHP) se não der certo faça igual lhe falei faça uma função que troque as letras com acentos por uma em maiúscula.

Espero que isso lhe ajude.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada, Wess!

 

Não deu certo

 

A questão é que não é sempre, geralmente entra certo no banco. Estou tentando descobrir em que situação isso não dá certo, mas é difícil.

 

Se alguém tiver alguma outra ideia, ou esse script citado acima...

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual padrão de encoding / charset está utilizando ?

a pergunta vale para o banco de dados, os arquivos php, a metatag html, etc..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz direto no banco

 

 

$query = "INSERT INTO tabela (id, nome) values ('1', UPPER('Marco Aurélio'))";

 

Abraços

KUROLE

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual padrão de encoding / charset está utilizando ?

a pergunta vale para o banco de dados, os arquivos php, a metatag html, etc..

 

 

Uso o padrão utf8 em tudo (banco, notepad++, metatag HTML).

 

Faz direto no banco

 

 

$query = "INSERT INTO tabela (id, nome) values ('1', UPPER('Marco Aurélio'))";

 

Abraços

KUROLE

 

Olá!

 

eu usao assim: $nome= mb_strtoupper($_POST['nome']);

 

Mas vou tentar da forma que me indicou e posto aqui se deu certo.

 

Valeu a dica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

[RESOLVIDO]

 

Desculpem a demorar em concluir, mas estou na correria...

 

A solução foi definir o charset

"http-equiv="Content-Type" content="text/html; charset=utf-8"

em cada página de conexão com o banco, não só no formulário.

 

 

Valeu pelas dicas!

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.