segunda-feira, 14 de dezembro de 2009

Fazer select em coluna com acento no PHP/Mysql

Eu sei que isso parece absurdo - e de fato é! -, mas por incrível que pareça ocorreu hoje comigo!
Tive que realizar uma interface com um sistema externo, e para isso foi disponibilizada uma view no Mysql com os dados necessários.
E qual não foi minha surpresa ao ver que a "criatura" criou uma view em que duas colunas estavam com acentuação!?
Padrão SQL ANSI para que, não é mesmo!?

Para piorar, a burocracia aliada à falta de vontade dele era tão grande que ia acabar demorando mais umas duas semanas para que tudo fosse corrigido. Então, lá vou eu achar uma solução para esta c.. coisa!

Inicialmente tentei converter tudo para UTF8, utilizando as funções utf8_encode() para "encodar" a string de SQL e a mysql_set_charset() para os encodings do cliente e do servidor mysql também serem UTF8. Porém, nada feito, o erro persistia...

Foi então que conheci uma função que resolveu o problema: mysql_field_name(). Esta função retorna os nomes de todas as colunas de uma SELECT já no encoding correto!
E então, depois de umas 2 horas quebrando a cabeça, saiu este Frankstein:
<?php

# imagine uma tabela que tenha um campo chamado "informação"

mysql_connect('localhost', 'root', '');
mysql_select_db('teste');

# Fazemos um select trazendo somente uma linha, para poder pegar o nome de todas as colunas
$h = mysql_query('SELECT * FROM teste LIMIT 1');

# Aqui pegamos o nome da coluna acentuada, já no encoding correto
$coluna = mysql_field_name($h, 0);

# E então a usamos para criar uma query pegando os valores dela, note que somos obrigados a usar o acento grave -
# também conhecido (de forma errada) como crase(`) - para cercar o nome da coluna, porque senão o mysql continua a dar erro
$h = mysql_query('SELECT `'.$coluna.'` as informacao FROM teste') or die(mysql_error());

# Pronto, finalmente ele retorna a query com sucesso!
print_r( mysql_fetch_assoc($h));

quinta-feira, 16 de outubro de 2008

Novo grupo PHP-SP

Você trabalha com PHP?
Mora em São Paulo?
Quer participar de um grupo local?

"Seus problemas se acabaram-se!"

Foi criado um novo grupo para os programadores PHP de São Paulo, o PHP-SP no Google Groups, muito mas prático e seguro que o antigo, que era no Yahoo.

Junto com o grupo foi criado também um blog, o www.phpsp.org.br onde todos podem participar, enviando dicas, tutoriais, vagas de emprego e tudo mais relacionado ao PHP em São Paulo, mantido atualmente pelo Marcelo Toscano.

Esperamos vocês por lá!

quarta-feira, 15 de outubro de 2008

Rode o IE4/IE5/IE6 junto com o IE7!

Essa dica é para todos aqueles que desenvolvem websites/webapps para clientes que teimam em continuar usando versões pré-históricas do navegador mais usado no mundo, o Internet Explorer.

Como nenhuma versão da família é totalmente compatível com outra, sempre que se está desenvolvendo um leiaute é extremamente necessário visualizar como ele é renderizado nessas versões mais antigas, além, é claro, do Firefox e (obrigado por complicar ainda mais, Google/Apple!) o Chrome/Safari.

Neste local você pode baixar desde o IE4 até o IE6: http://browsers.evolt.org/?/ie/32bit/standalone

E detalhe, eles não precisam ser instalados, isto é, são "stand-alone", é só descompactar e executar, evitando assim qualquer conflito com a versão atual no seu PC!