Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola, estou com uma sql que quando uso o SET lc_time_names = "pt_br" , ele retorna 0 registros.
$db->Query('SET lc_time_names = "pt_br" ; SELECT `p`.*,
DATE_FORMAT(`p`.`data`,"%%W %%d/%%m") AS `dia`,
DATE_FORMAT(`p`.`data`,"%%Y%%m%%d") AS `rdia`
FROM `programacao` AS `p`
WHERE `p`.`data` >= CURDATE()
ORDER BY `p`.`data` ASC');
Alguem ai pode me ajudar. Ja olhei todas as configurações, e o pt_br está abilitado, porem ainda não funciona.
Estou usando o mysql_connect
@mysql_query("SET lc_time_names = 'pt_BR'");
mais ainda sim não pega os nomes em português.
Acredito que seja problema de locales, mas não tenho acesso no servidor.
Alguem sabe se da pra fazer uma configuração dessas no arquivo .htaccess
Eu sei que ele faz muita coisa, será que isso tbm tem como fazer por ele ?
>
Alguem sabe se da pra fazer uma configuração dessas no arquivo .htaccess
Não, você não vai conseguir fazer isso pelo .htaccess
Apenas teste o fragmento abaixo e veja o resultado
$conn = mysql_connect( 'host' , 'usuario' , 'senha' ); //troque host, usuario e senha pelos dados corretos
mysql_query("SET lc_time_names = 'pt_BR'" );
if ( ( $res = mysql_query( 'select date_format( now() , "%W" ) as "dia";' ) ) !== false ){
$row = mysql_fetch_array( $res , MYSQL_ASSOC );
echo 'Hoje é ' , $row[ 'dia' ];
}
mysql_close( $conn );Existe uma possibilidade de se recuperar o timestamp do banco de dados e formatar usando as funções do PHP, porém, fazendo isso, você estaria misturando as camadas de desenvolvimento.
Vou mover o tópico para o fórum de MySQL, talvez o pessoal de lá tenha alguma idéia.
Caso você ainda não encontre uma solução em MySQL o ideal será entrar em contato com o administrador do seu servidor.
e como isso seria feito ?
Como a Localweb não pode fazer nenhuma alteração para instalar o pt_br tive que fazer meio que uma gambiarra pra resolver o meu problema. Segua abaixo como ficou o código, pode servir de ajuda para alguem.
$tmpDia = Show($r['dia'], true, true, true) . "";
$tmpDia = strtoupper($tmpDia);
$dias_en = array('SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY');
$dias_pt = array('DOMINGO', 'SEGUNDA-FEIRA', 'TERÇA-FEIRA', 'QUARTA-FEIRA', 'QUINTA-FEIRA', 'SEXTA-FEIRA', 'SÁBADO');
$tmpDia = str_replace($dias_en, $dias_pt, $tmpDia);
echo $tmpDia;
Se possível algum moderador volte o post para php e o feche.
>
Ola, estou com uma sql que quando uso o SET lc_time_names = "pt_br" , ele retorna 0 registros.
Leonidas Pinheiro,
Essa, deve ser uma consulta independente. Ficaria assim:
$db->Query('SET lc_time_names = "pt_br"'); //Separamos o set lc_time_names em uma consulta só para ele
Qualquer consulta feita após o set lc_time_names já retornará os nomes (dias, meses, ...) no idioma que você escolheu e por isso, ela deve ser enviada apenas uma vez.
O ideal é enviar essa instrução logo após a conexão.
Como eu disse ontem, eu não sei se você está usando PDO, MySQLi ou se você está usando as funções antigas (mysql_connect, mysql_query) para fazer esse trabalho; Se for PDO, basta na hora da conexão você enviar assim:
$pdo = new PDO( 'mysql:host=servidor;dbname=bancodedados', 'usuario' , 'senha',
array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'set lc_time_names="pt_BR"'
)
);
Se você enviar conforme o fragmento acima, você não precisará mais enviar a instrução separada e todos os nomes (dias, meses, ...) retornarão no idioma que você escolheu.
;)