Mysql: How do i convert from minutes to TIME format?

Today, I needed to convert a minutes string to TIME format.

basically, I had to combine FLOOR, MOD, CONCAT and TIME functions.

Like this:

SELECT TIME(CONCAT(floor(45 / 60),':', MOD(45, 60)))

Anúncios

Migrando adobe flex 3 para HTML 5 – mx:RichTextEditor

Olá.

Estou migrando a minha aplicação feita em adobe flex 3 para HTML 5 e no meu banco de dados há vários registros que armazenam informações geradas pelo componente mx:RichTextEditor.

Já não é novidade que os componentes richtext feitos em javascript não são compatíveis com o mx:RichTextEditor, então um meio é converter estes registros de um formato para outro.

Fiz um pequeno script em PHP que faz este processo.

<?php
$conteudo = utf8_decode('<TEXTFORMAT LEADING=\"2\"><P ALIGN=\"CENTER\"><FONT FACE=\"Verdana\" SIZE=\"48\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"CENTER\"><FONT FACE=\"Verdana\" SIZE=\"48\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\">Napoleon Hill</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"LEFT\"><FONT FACE=\"Verdana\" SIZE=\"48\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"LEFT\"><FONT FACE=\"Verdana\" SIZE=\"16\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\">nasceu 26 de outubro <B><I>1883</I></B> no Estado da Virgínia, nos Estados Unidos em uma família pobre e morreu no ano 1970. Quando <FONT COLOR=\"#FF0000\">tinha 10 anos</FONT> de idade sua mãe morreu e, em seguida, se tornou um filho rebelde.</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"LEFT\"><FONT FACE=\"Verdana\" SIZE=\"16\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"LEFT\"><FONT FACE=\"Verdana\" SIZE=\"16\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\">Dois anos depois seu pai se casou. Ao estar pela primeira vez frente a sua madrasta comentou: ”Napoleão é o pior homem que você pode encontrar”. Ela colocou as mãos em seus ombros e disse: “Menino, isso não é uma falta grave. Talvez você seja o cara mais esperto do mundo e, simplesmente, não estão sabendo o que fazer com a sua inteligência".[2]</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"LEFT\"><FONT FACE=\"Verdana\" SIZE=\"16\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"LEFT\"><FONT FACE=\"Verdana\" SIZE=\"16\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\">Aquelas palavras tiveram um impacto importante sobre a vida de Hill. Aos treze anos escreveu um pequeno jornal chamado “Mountain Reporter”. Ele começou a estudar Direito, mas teve que sair devido a problemas financeiros.</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"LEFT\"><FONT FACE=\"Verdana\" SIZE=\"16\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"LEFT\"><FONT FACE=\"Verdana\" SIZE=\"16\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\">E 1908, por causa de suas reportagens para o jornal, Napoleon Hill teve a oportunidade de entrevistar o industrial Andrew Carnegie, que não só era o homem mais rico do mundo na época, mas o segundo homem mais rico que a humanidade já conheceu, depois de John D. Rockefeller.</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"LEFT\"><FONT FACE=\"Verdana\" SIZE=\"16\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"LEFT\"><FONT FACE=\"Verdana\" SIZE=\"16\" COLOR=\"#66FF00\" LETTERSPACING=\"0\" KERNING=\"0\"><B><I>Andrew Carnegie</I></B><FONT COLOR=\"#124332\"> viu um brilho diferente nos olhos de Napoleon Hill e decidiu revelar ao jovem repórter a sua crença de que seria possível, por meio de extenso trabalho de pesquisa, identificar em homens de triunfo características que poderiam ser desenvolvidas nas pessoas. Era a ciência pela qual tinha prosperado e se tornado um homem tão importante, uma espécie de fórmula para o sucesso. Uma seleção de virtudes, que se combinadas em uma personalidade garantiriam o completo êxito de tal indivíduo. Disse que era necessário identificar as características dos homens e mulheres de sucesso e que poderiam ser implementadas pelo homem comum, contanto que houvesse um método.</FONT></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"CENTER\"><FONT FACE=\"Verdana\" SIZE=\"16\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\"></FONT></P></TEXTFORMAT><TEXTFORMAT LEADING=\"2\"><P ALIGN=\"CENTER\"><FONT FACE=\"Verdana\" SIZE=\"16\" COLOR=\"#124332\" LETTERSPACING=\"0\" KERNING=\"0\"><B><I>O milionário, então, propôs a Hill que iniciasse um grandioso projeto para investigar minuciosamente essas virtudes de pessoas triunfadoras e que desenvolvesse um curso que permitisse aos interessados desenvolver estas características.</I></B></FONT></P></TEXTFORMAT>');

function cleanHTML($str){
	$str = str_replace('\"', '"', $str);

	$str = str_replace('<TEXTFORMAT LEADING="2">', '', $str);
	$str = str_replace('</TEXTFORMAT>', '', $str);

	$str = str_replace('<FONT', '<span', $str);
	$str = str_replace('</FONT>', '</span>', $str);

	$str = str_replace('ALIGN="', 'style="text-align: ', $str);
	$str = str_replace('"><FONT FACE="', '; font-family: ', $str);
	$str = str_replace('" SIZE="', '; font-size: ', $str);
	$str = str_replace('" COLOR="', 'px; color: ', $str);

	$str = str_replace('FACE="', 'style="font-family: ', $str);
	$str = str_replace('COLOR="', 'style="color: ', $str);

	$str = preg_replace('/<span SIZE="(\d+)">/', '<span style="font-size:${1}px">', $str);
	$str = str_replace(' SIZE="', ' style="font-size: ', $str);

	$str = preg_replace('/"\sLETTERSPACING="\d+" KERNING="\d+"/', ';"', $str);
	$str = preg_replace('/<LI><span style=".*?\"><\/span><\/LI>/', '', $str);
	$str = str_replace('<LI>', '<li>', $str);
	$str = str_replace('</LI>', '</li>', $str);
	$str = str_replace('<A HREF', '<a href', $str);
	$str = str_replace('</A>', '</a>', $str);
	$str = str_replace('<P', '<p', $str);
	$str = str_replace('</P>', '</p>', $str);
	$str = str_replace('<I>', '<em>', $str);
	$str = str_replace('</I>', '</em>', $str);
	$str = str_replace('<B>', '<strong>', $str);
	$str = str_replace('</B>', '</strong>', $str);
	$str = str_replace('<b>', '<strong>', $str);
	$str = str_replace('</B>', '</strong>', $str);
	$str = str_replace('LEFT', 'left', $str);
	$str = str_replace('RIGHT', 'right', $str);
	$str = str_replace('JUSTIFY', 'justify', $str);
	$str = str_replace('LEFT', 'left', $str);
	$str = str_replace('TARGET', 'target', $str);

	return $str;
}

echo cleanHTML($conteudo);

Fica a dica para quem estiver migrando de tecnologia.

Abraços

Aplicações para múltiplos idiomas e problemas com codificação

Boa tarde.

Pode parecer amador, mas é bem comum ver problemas de codificação (encoding) quando se trabalha com aplicativos para múltiplos idiomas. Principalmente aqui no Brasil que utilizamos ISO-8859-1 e quando vamos testar nossas aplicações aparecem aqueles símbolos estranhos.

A regra é bem simples. Quando você estiver desenvolvendo um aplicativo para múltiplos idiomas, utilize como regra a codificação UTF8 no seu projeto. Em todas as partes! Banco de dados, programação e regras de negócio, e na camada visual.

No banco de dados utilize este comando na criação da base de dados:

CREATE DATABASE meushema CHARACTER SET utf8 COLLATE utf8_general_ci;

Caso a base de dados já exista, utilize este comando:

ALTER DATABASE meuschema CHARACTER SET utf8 COLLATE utf8_general_ci;

Eu utilizo Aptana Studio para desenvolver os meus projetos e para estabelecer a codificação é simples.

1 – Pressione com o botão direito sobre o nome do seu projeto

2 – Pressione sobre Properties

3 – Pressione sobre Other

4 – Selecione UTF-8

5 – Pressione em ok

 

Pronto! Agora você não terá dores de cabeça com encoding no mysql, php, HTML ou javascript.

Espero ter ajudado

Até a próxima

PHP: Lista de fuso horário (timezone)

Olá.

Recentemente precisei controlar o fuso horário em um dos meus aplicativos, pois o mesmo é acessado de vários locais do Brasil e, em breve, será acessado de outros países.

O primeiro passo foi buscar uma lista organizada de fuso horário no PHP. Encontrei um artigo interessante que apresenta todos os fusos de uma forma organizada. Esta mesma lista é utilizada no aplicativo Pingdom.

1 Passo: Criar uma tabela no seu banco de dados.

CREATE TABLE IF NOT EXISTS `timezone` (
 `timezid` int(11) NOT NULL auto_increment,
 `tz` varchar(250) NOT NULL,
 `gmt` text NOT NULL,
 PRIMARY KEY (`timezid`)
 ) ENGINE=InnoDB ;

2 Passo: Inserir os registros.

INSERT INTO timezone (timezid, tz, gmt) VALUES
(1, 'Pacific/Kwajalein', '(GMT -12:00) Eniwetok, Kwajalein'),
(2, 'Pacific/Samoa', '(GMT -11:00) Midway Island, Samoa'),
(3, 'Pacific/Honolulu', '(GMT -10:00) Hawaii'),
(4, 'America/Anchorage', '(GMT -9:00) Alaska'),
(5, 'America/Los_Angeles', '(GMT -8:00) Pacific Time (US & Canada) Los Angeles, Seattle'),
(6, 'America/Denver', '(GMT -7:00) Mountain Time (US & Canada) Denver'),
(7, 'America/Chicago', '(GMT -6:00) Central Time (US & Canada), Chicago, Mexico City'),
(8, 'America/New_York', '(GMT -5:00) Eastern Time (US & Canada), New York, Bogota, Lima'),
(9, 'Atlantic/Bermuda', '(GMT -4:00) Atlantic Time (Canada), Caracas, La Paz'),
(10, 'Canada/Newfoundland', '(GMT -3:30) Newfoundland'),
(11, 'Brazil/East', '(GMT -3:00) Brazil, Buenos Aires, Georgetown'),
(12, 'Atlantic/Azores', '(GMT -2:00) Mid-Atlantic'),
(13, 'Atlantic/Cape_Verde', '(GMT -1:00 hour) Azores, Cape Verde Islands'),
(14, 'Europe/London', '(GMT) Western Europe Time, London, Lisbon, Casablanca'),
(15, 'Europe/Brussels', '(GMT +1:00 hour) Brussels, Copenhagen, Madrid, Paris'),
(16, 'Europe/Helsinki', '(GMT +2:00) Kaliningrad, South Africa'),
(17, 'Asia/Baghdad', '(GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersburg'),
(18, 'Asia/Tehran', '(GMT +3:30) Tehran'),
(19, 'Asia/Baku', '(GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi'),
(20, 'Asia/Kabul', '(GMT +4:30) Kabul'),
(21, 'Asia/Karachi', '(GMT +5:00) Ekaterinburg, Islamabad, Karachi, Tashkent'),
(22, 'Asia/Calcutta', '(GMT +5:30) Bombay, Calcutta, Madras, New Delhi'),
(23, 'Asia/Dhaka', '(GMT +6:00) Almaty, Dhaka, Colombo'),
(24, 'Asia/Bangkok', '(GMT +7:00) Bangkok, Hanoi, Jakarta'),
(25, 'Asia/Hong_Kong', '(GMT +8:00) Beijing, Perth, Singapore, Hong Kong'),
(26, 'Asia/Tokyo', '(GMT +9:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk'),
(27, 'Australia/Adelaide', '(GMT +9:30) Adelaide, Darwin'),
(28, 'Pacific/Guam', '(GMT +10:00) Eastern Australia, Guam, Vladivostok'),
(29, 'Asia/Magadan', '(GMT +11:00) Magadan, Solomon Islands, New Caledonia'),
(30, 'Pacific/Fiji', '(GMT +12:00) Auckland, Wellington, Fiji, Kamchatka');

3 Passo: Crie um script php que busca o fuso horário e imprime a hora atual.

<?php
$conn = mysql_connect("SEU-HOST" ,"SEU-USUARIO" , "SUA-SENHA");
mysql_select_db("SUA-BASE");
$query = mysql_query("SELECT * FROM timezone", $conn);

echo "<h1>Fuso:</h1>";
while($row = mysql_fetch_array($query, MYSQL_BOTH)){
    echo $row["gmt"], "<BR>";
}

date_default_timezone_set("Brazil/East");
echo "<HR/>Hora atual: ", date("H:i:s");

date_default_timezone_set("Pacific/Honolulu");
echo "<BR/>Hora atual no hawaii: ", date("H:i:s");

Até a próxima