Vamos dar uns toques de SQL? V

Vamos dar uns toques de SQL? V

Criado por Pedro Pinto em 25 de Junho de 2011 | 7 comentários

Por Pedro Gaspar para o PPLWARE

Depois de termos aprendido algumas das funções mais básicas de sql, esta semana vamos aprender a agrupar resultados utilizando o DISTINCT e o GROUP, alem disso também vamos aprender a contar os resultados obtidos com recurso ao COUNTsql_00

Para apresentar alguns exemplos utilizei a tabela que temos vindo a usar nas ultimas semanas com os seguintes dados:

sql_01
Por vezes temos dados repetidos na nossa tabela e queremos que eles apareçam apenas uma vez na listagem, pois esta semana vamos aprender duas formas de o fazer
Começando pelo DISTINCT

Sintaxe de Utilização

SELECT DISTINCT nome_coluna(s)    
FROM nome_tabela

O DISTINCT é a forma mais simples de o fazer, mas também podemos utilizar o GROUP
Sintaxe de Utilização

SELECT nome_coluna(s)
FROM nome_tabela
GROUP BY coluna1 [, coluna2, coluna3]

Nada melhor para explicar todo o conceito do que utilizar alguns exemplos:

EXEMPLO1
Objectivo: Apresentar a lista de cores de cabelo
Query utilizando o DISTINCT:

SELECT DISTINCT cor_cabelo
FROM `tbl_ppware`

Query utilizando o GROUP:

SELECT cor_cabelo
FROM `tbl_ppware`
GROUP BY cor_cabelo

Resultado:

sql_ex1
Apesar de as duas funções apresentarem o mesmo resultado o seu funcionamento e totalmente diferente, sendo que com o GROUP conseguimos fazer queries muito mais complexas do que com o DISTINCT.

Vamos agora aprender a função COUNT para mais à frente utiliza-la em conjunto com o DISTINCT e o GROUP
O COUNT permite-nos contar o numero de registos de uma determinada coluna.

Sintaxe de utilização

SELECT COUNT(nome_coluna)
FROM nome_tabela

EXEMPLO2
Objectivo:
Apresentar o numero de registos que estão na tabela tbl_pplware
Query:

SELECT COUNT( * )
FROM `tbl_ppware`

(como não queremos seleccionar nenhum campo em particular podemos utilizar o ‘*’, mas poderíamos ter utilizado um campo qualquer para o efeito)
Resultado:

sql_ex2
Para não aparecer ‘COUNT(*)’ no nome do campo da query que acabamos de fazer podemos utilizar o AS de forma a dar o nome que quisermos ao campo, vejamos o mesmo exemplo mas utilizando o AS
Query:

SELECT COUNT( * ) AS total
FROM `tbl_ppware`

Resultado:

sql_ex3

EXEMPLO3
Objectivo: Apresentar o numero das diferentes cores de cabelo existentes
Query:

SELECT COUNT( DISTINCT cor_cabelo ) AS cores
FROM `tbl_ppware`

Resultado:

EXEMPLO4
Agora vamos juntar tudo o que aprendemos até este ponto.
Objectivo: Apresentar as cores de cabelo existentes e ao mesmo tempo mostrar quantas vezes existe cada uma
Query:

SELECT cor_cabelo, COUNT( * ) AS total
FROM `tbl_ppware`
GROUP BY cor_cabelo

Resultado:

sql_ex4
Espero que tenham gostado da explicação sobre sql desta semana, para a semana há mais.

Aprenda a programar para Android – Parte II

Aprenda a programar para Android – Parte II

Criado por Pedro Pinto em 21 de Junho de 2011 | 19 comentários

Programação da aplicação calculadora em Java (continuação do artigo anterior aqui)

Na semana passada ensinamos como criar de uma forma simples layouts em XML para as aplicações a desenvolver para Android. O processo é relativamente simples e caso ainda existam dúvidas não hesitem em perguntar. Depois de criada a interface (layout) e definidos todos os widgets (componentes) é hora de passar a programação da aplicação propriamente dita.

Vamos então ensinar como somar dois números através de uma aplicação para Android.

droid_00

No artigo anterior (ver aqui), definimos os nomes de cada widget através da propriedade id tendo ficado definido da seguinte forma:

  • EditText – @id/edt_num1
  • EditText – @id/edt_num2
  • Button –    @id/btn_somar

droid_01

Vamos agora  começar na programação. Para isso vamos abrir o ficheiro calculadora.java (que se encontra dentro do projecto criado, em src—>pt.pplware).

droid_02

O próximo passo é aceder ao widgets que foram definidos durante a criação do layout.Vamos começar então por fazer uso da classe EditText e definir num1 e num2 como sendo desse tipo. Para o botão fazemos uso da classe Button e definimos btn_somar desse tipo. Devemos também incluir os respectivos imports das classes Button e EditText.

Nas últimas três linhas (marcadas na imagem seguinte) vamos associar as variáveis num1, num2 e btn_somar aos widgets que definimos durante a criação do interface. O método findViewById permite “encontrar” um widget por id (definido durante a criação do interface) que se encontra definido na classe R (que se encontra em gen—>pt.pplware—>R.java).

droid_05

O próximo passo é programar um evento para o botão btn_somar. Basicamente pretende-se que quando o utilizador carregar no botão, seja apresentada a soma entre o valor inserido na edt_num1 e edt_num2.

Começamos por criar um listener para o evento Onclick e nesse momento “apanhamos” os valores das EditTexts. De seguida calculamos a soma dos valores e apresentamos o resultado através de um componente do tipo AlertDialog.droid_06

Resultado

Depois de programarem correctamente a aplicação, basta executar a mesma e testar.

droid_resultado

Código Completo (calculadora.java)
package pt.pplware;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;   public class calculadora extends Activity {   EditText num1, num2;
 Button btn_somar;
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);   num1 = (EditText) findViewById(R.id.edt_num1);
 num2 = (EditText) findViewById(R.id.edt_num2);
 btn_somar = (Button) findViewById(R.id.btn_somar);   btn_somar.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {   //Obtem valor da EditText1 e EditText2
 double val1 = Double.parseDouble(num1.getText().toString());
 double val2 = Double.parseDouble(num2.getText().toString());   //Calcula soma dos numeros
 double soma = val1+val2;   // Apresenta resultados
 AlertDialog.Builder infoResultado = new AlertDialog.Builder(calculadora.this);
 infoResultado.setTitle("Resultado");
 infoResultado.setMessage("A Soma é: "+soma);
 infoResultado.setNeutralButton("Ok",null);
 infoResultado.show();
 }
 });
 }
}

Esperamos que este pequeno artigo vos incentive a entrarem no mundo da programação para Android. Tal como tive a oportunidade de referir a alguns leitores, estes são artigos de iniciação que têm como objectivo ensinar a dar os primeiros na programação para dispositivos móveis com Android.

Agradeço desde já que coloquem todas as vossas duvidas em comentário para que eu e leitores mais experientes possamos dar uma ajuda. Lembrem-se que este é um espaço de partilha de know how e experiências. Começar a programar para Android não é difícil…é preciso é força de vontade e claro que umas dicas dão sempre jeito.
Como trabalho para casa (TPC), podem tentar implementar a função de subtrair, multiplicar e dividir. Depois se pretenderem ver publicado o vosso trabalho enviem-me o mesmo para o e-mail (prometo que não disponibilizo no market Android :) ).

Artigos relacionados

Download: calculadora_android

PHP e Javascript – Parte III

PHP e Javascript – Parte III

Criado por Pedro Pinto em 16 de Junho de 2011 | 22 comentários

PHP e Javascript Parte III

por Pedro Peixoto

Como vimos nos dois últimos artigos, o Javascript vem trazer às nossas aplicações WEB a interacção e flexibilidade que uma linguagem server-side como o PHP não consegue oferecer. Nesse sentido, decidimos mudar o nome da rubrica “PHP é a quinta-feira” para “Programação WEB é à Quinta-feira! “. Esta semana continuamos a explorar esta linguagem que se tem assumido como a principal linguagem WEB, para além de aumentar um pouco o grau de complexidade da nossa programação vamos também perceber como fazer a integração do JS com o PHP.

web_01

No último artigo aprendemos o que são eventos, funções e os conceitos básicos da programação com JS. O Javascript ao contrário do que muita gente pensa, é uma linguagem muito completa, para além das funções básicas que todas as linguagens de programação “tem” de oferecer, existem funções para tratamento de strings, cálculos matemáticos, arrays, entre muitas outras. Além disso, existem inúmeras bibliotecas que facilitam e expandem o uso do Javascript. Não há limites, é dar asas à imaginação, a interacção e personalização podem ser levadas ao extremo!

Hoje vamos fazer um pequeno exemplo prático onde usaremos eventos, funções, estruturas de controlo, variáveis, inputs e outputs. Será um pouco de tudo o que é necessário para qualquer funcionalidade JS. Vamos então aprender a apresentar conteúdo diferente nos nossos formulários após uma escolha do utilizador.

Antes de mais vamos criar a página HTML com os componentes necessários.

<html>
	<head>
	</head>
	<body
		Que sistema usa?</br>
		<select>
			<option value="1">iPhone</option>
			<option value="2">Android</option>
			<option value="3">Windows Mobile</option>
			<option value="4">Outro</option>
		</select>
		<span id="comentario"></span>
	</body>
</html>

Colocámos um elemento <select> que permite ao utilizador efectuar uma escolha entre as diferentes opções, de seguida inserimos um <span> que vai permitir apresentar conteúdo de acordo com a escolha do utilizador. Falta agora o código Javascript. A estratégia é usar o evento onChange (accionado quando o utilizador altera o valor do select) para chamar uma função passando o valor seleccionado. Dentro da função colocaremos um switch/case, que dependendo da escolha coloca conteúdo diferente no <span>.

<html>
	<head>
		
			function apresentaConteudo(escolha)
			{
				var elemento=document.getElementById('comentario');
				switch(escolha)
				{   case '1': elemento.innerHTML='Viva a Apple!'; break;
					case '2': elemento.innerHTML='Bem-vindo google fan!'; break;
					case '3': elemento.innerHTML='Wiiinnnndddowwwssss!!!'; break;
					case '4': elemento.innerHTML='Qual?'; break;   }
			}
		
	</head>
	<body
		Que sistema usa?</br>
		<select onChange="apresentaConteudo(this.value)" id=”dispositivo”>
			<option value="1">iPhone</option>
			<option value="2">Android</option>
			<option value="3">Windows Mobile</option>
			<option value="4">Outro</option>
		</select>
		<span id="comentario"></span>
	</body>
</html>

O resultado é o esperado:

clip_image002

Podemos ainda mudar a função de maneira a apresentar mais um elemento <select> no caso do utilizador escolher “Outro”:

function apresentaConteudo(escolha)
{
var elemento=document.getElementById('comentario');
	switch(escolha)
		{
		case '1': elemento.innerHTML='Viva a Apple!'; break;
		case '2': elemento.innerHTML='Bem-vindo google fan!'; break;
		case '3': elemento.innerHTML='Wiiinnnndddowwwssss!!!'; break;
		case '4': elemento.innerHTML='Qual?
<br />
<select><option selected>Bada</option><option>Symbian</option></select>'; break;
	}
}

clip_image004

Poderíamos também ter obtido o valor seleccionado dentro da própria função para isso teríamos de usar:

“document.getElementById(‘dispositivo’).value”

Como facilmente se conclui, o atributo innerHTML permite aceder ao código HTML que está dentro do elemento, por sua vez, o atribuo value permite aceder ao valor se um componente. Existem inúmeraspropriedades que nos possibilitam interagir totalmente com os elementos de uma página HTM, por sua vez os elementos também podem ser acedidos querem directamente (através do ID, classe), quer indirectamente usando a estrutura DOM.

Por último, vamos aprender como integrar PHP e Javascript, é um processo muito rápido. No fundo o PHP, corrido no servidor, cria dinamicamente ou de forma estática o código Javascript. Para tal, é necessário que o nosso ficheiro tenha extensão PHP e seja aberto no servidor (para poder ser interpretado). O código JS é construído como qualquer outro código HTML, vulgarmente usando o comando “echo” do PHP.

<?php
	echo ‘Ano: <select onChange=”alert(\’Mudei!\’)”><option>’ . date(‘Y’) . ’</option><option>’ . (date(‘Y’)-1) . ’</option></select>’;
?>

No exemplo de cima podemos ver que quando escrevemos JS com PHP, no caso de estarmos a recorrer às plicas ou aspas para delimitar a string PHP, temos que usar a \ para de seguida podermos usar a plica ou aspa respectivamente.

Poderemos ainda usar PHP para popular elementos HTML usando JAVASCRIPT, sem ser necessário recarregar a página. De facto cada vez mais encontramos páginas onde as acções parecem instantâneas, como se a página estivesse em constante comunicação com o servidor. Para isso usamos AJAX que no fundo permite que a página, através de Javascript, faça um pedido http (que pode ser uma página gerada em PHP) sem ser recarregada. O AJAX assume por isso cada vez mais importância nas aplicações WEB PHP, no entanto devido à complexidade inútil do uso directo do AJAX, não avançaremos para esta fase sem a ajuda de bibliotecas que simplificam este processo.

Em conclusão, o Javascript é uma linguagem flexível, e corresponde às exigências vulgares de uma página WEB, é bastante completa no entanto, quando pretendemos fazer coisas mais elaboradas, principalmente ao nível de efeitos gráficos ou tratamento elaborado de dados, temos muito código para escrever sendo que o JS poderia e deveria ter funções que correspondessem directamente às necessidades mais comuns e particulares da programação WEB. Podemos “contornar” este problema recorrendo a bibliotecas. Desta forma vamos no próximo artigo aprender a fazer mais escrevendo menos, para tal recorremos ao jQuery. Esta biblioteca JS permitirá com simples linhas de código efectuar grande parte das tarefas comuns de uma página de Internet.

PHP é a quinta-feira – Introdução ao JavaScript (Parte II)

PHP é a quinta-feira – Introdução ao JavaScript (Parte II)

Criado por Pedro Pinto em 9 de Junho de 2011 | 16 comentários

Por Pedro Peixoto para o PPLWARE
Tal como prometido na última semana, hoje vamos perceber como pode uma aplicação ou um website desenvolvido em PHP tornar-se mais interactivo recorrendo ao Javascript, a linguagem clientside mais usada em ambientes web. O objectivo será, daqui a algumas rubricas, perceber a fórmula explosiva da união do PHP com jQuery, uma livraria indispensável a qualquer programador WEB. Mas como tudo tem que começar por baixo, vamos então, ver na prática como podemos usar o Javascript nos nossos websites/webapps.
php_java
Mas antes de começar, vamos “separar as águas”:

  • O javascript é incorporado nas páginas HTML e interpretado pelo browser do cliente que acede à nossa página, sendo uma linguagem orientada a eventos.
  • O PHP corre do lado do servidor, sendo que o cliente recebe uma página HTML que foi gerada através da programação PHP.

Assim, vulgarmente, nas nossas aplicações usamos o PHP para gerar conteúdo dinamicamente, ligar à base de dados e realizar operações pesadas ou que devem ocorrer num ambiente controlado. Já o Javascript pode ser usado para melhorar graficamente elementos HTML, criar efeitos agradáveis, melhorar a interacção do utilizador, etc…

Incorporar Javascript numa página HTML

Podemos colocar o nosso JS na própria página HTML ou então num ficheiro separado que depois será referenciado na página HTML. Por uma questão de facilidade, vamos começar por escrever o código JS na própria página HTLM. Para tal, comecem por criar um ficheiro vazio na pasta do servidor e alterar a extensão para .php por exemplo js.php.

Seguidamente abrimos o ficheiro num editor de texto (ex.: notepad ou notepad++), e criamos uma estrutura HTML:

<html>
<head>
</head>
<body>
</body>
</html>

O código JS pode colocar-se em qualquer parte, e escreve-se entre as tags .


Para vermos algum resultado vamos aprender desde já a mostrar uma Mensagem ao utilizador, para isso chamamos a função alert();.

<html>
<head>

alert("Ola PPLWARE!!!");

</head>
<body>
</body>
</html>

Se abrirmos a página no browser a mensagem surge normalmente:

clip_image002

Também podemos adicionar código javascript a eventos que disparam quando o utilizador realiza determinadas acções. Cada elemento javascript possui uma séria de eventos, como por exemplo:

  • onLoad – Dispara quando o utilizador abre a página
  • onUnload – Dispara quando o utilizador fecha a página
  • onFocus – Dispara quando o elemento é selecionado, por exemplo quando se coloca o cursor numa caixa de texto.
  • onBlur – Dispara quando o elemento deixa de estar selecionado.
  • onChange – Dispara quando o utilizador muda o valor do elemento
  • onMouseOver – Dispara quando o utilizador passa o cursor do rato por cima do elemento.
  • onMouseOut – Dispara quando o cursor do rato sai de cima do elemento
  • onClick – Dispara quando o utilizador clica no elemento.
  • E muitos mais…

Vamos de seguida criar um botão que emita um aviso em alguns destes eventos.

<html>
<head>

alert("Ola PPLWARE!!!");

</head>
<body onLoad="alert('Bem-vindo!');" onUnload="alert('Até já');"> <input type="button" value="Botao de teste de eventos" onClick="alert('clicaram-me');" onMouseOver="alert('rato em cima de mim');" onMouseOut="alert('rato saiu de cima de mim');"/>
</body>
</html>

De notar que nos eventos não necessitamos de colocar as tags . Colocámos também código para os eventos onLoad e onUnload no body.

Depois de guardar e abrir a página no browser podem brincar um pouco com os eventos que criámos.

clip_image004

Agora, vamos aprender a ler valores dos elementos. É possível fazer isso de mil e uma maneiras mas, para já, a mais fácil é através do ID do elemento.

Em primeiro lugar vamos criar uma caixa de texto:


De seguida, vamos alterar o código do botão:


alert("Ola PPLWARE!!!"); </head>
<body onLoad="alert('Bem-vindo!');" onUnload="alert('Atá já');"> <input type="text" id="caixadetexto"/> <input type="button" value="Botao de teste de eventos" onClick="alert(document.getElementById('caixadetexto').value);" /> </body>
</html>

Assim, podemos aceder ao valor da textbox através da função “getElementById()” que recebe por parâmetro o id do elemento a acessar. De entre as propriedades disponíveis num elemento, a propriedade “value” indica o valor actual. Desta forma, quando o botão for pressionado surge uma mensagem com o valor actual da caixa de texto. Eis o resultado:

clip_image006

No entanto percebe-se que o código ficou um pouco confuso, e como tal vamos simplificar usando para tal as “funções”.

<html>
<head>

alert("Ola PPLWARE!!!");
function mensagem()
{
alert(document.getElementById('caixadetexto').value);
}

</head>
<body onLoad="alert('Bem-vindo!');" onUnload="alert('Atá já');"> <input type="text" id="caixadetexto"/>
<input type="button" value="Botao de teste de eventos" onClick="mensagem();" />
</body>
</html>

O resultado é exactamente o mesmo.

E esta semana ficamos por aqui, já sabemos fazer output, inputs, funções e usar os eventos. Na próxima semana vamos aprender a integrar PHP com Javascript, e começar a fazer coisas mais complexas. O que acharam? Demasiado básico? Muito rápido para tanta coisa? Aguardo pelos vossos comentários.

“Cábula” do MySQL

Este artigo visa ajudar aos programadores a fazer as suas tarefas mais facilmente e ajudar a diminuir o tempo de desenvolvimento.Alguns termos encontram-se em brasileiro “a gente” entende-se bem :). Vamos la começar.

A função IN e NOT IN

Usamos IN para fazer consultas quando precisamos que seja retornado todos os registros onde em um determinado campos contenha um dos valores que serão passados no IN.

Usamos NOT IN quando queremos retornar tudo menos os resultados passados no NOT IN

Uso em String:

SELECT sigla, nome, população
FROM cidades
WHERE
Sigla IN(‘PR’, ‘SP’, ‘MG’);
//NOT IN
Sigla NOT IN(‘PR’, ‘SP’, ‘MG’);

Uso numérico:

SELECT nome, email, idade
FROM curriculos
WHERE
idade IN (18, 19, 20)
//NOT IN
idade NOT IN (15, 16, 17)

As funções IF e CASE WHEN

Usamos a função IF no MySQL com a mesma finalidade do que qualquer linguagem de programação, só que na maioria das vezes é mais fácil jogar essa verificação para o banco de dados do que para a linguagem de programação.

Sintaxe:

IF(condição, caso verdadeiro, caso contrário)

SELECT nome, email, IF(sexo =”M”, “Masculino”, “Feminino”)
FROM currículos

A função CASE WHEN:

Usamos a função CASE WHEN no MySQL com a mesma finalidade do que usamos em qualquer çinguagem de programação, so que na maioria da vezes é mais fácil jogar essa verificação para o banco de dados do que para a linguagem de programação.

Sintaxe:
CASE campo
WHEN “valor1” THEN “Novo valor”

Controle de fluxo

SELECT nome, setor
CASE mes_nascimento
WHEN 01 THEN “Janeiro”
WHEN 02 THEN “Fevereiro”
WHEN 03 THEN “Março”
WHEN 04 THEN “Abril”
WHEN 05 THEN “Maio”
WHEN 06 THEN “Junho”
WHEN 07 THEN “Julho”
WHEN 08 THEN “Agosto”
WHEN 09 THEN “Setembro”
WHEN 10 THEN “Outubro”
WHEN 11 THEN “Novembro”
ELSE “Dezembro” END AS mes_nascimento
FROM funcionários

Condições livres

SELECT
CASE
WHEN continente = “América” THEN “Continente americano”
WHEN pais = “Brasil” THEN “Continente sul americano”
WHEN continente = “Mexico” THEN “Continente norte americano”
WHEN estado = “Paraná” THEN “Região Sul”
WHEN estado = “São Paulo” THEN “Região Sudeste”

Funções matemáticas

Trigonometria
pi() = 3.14.15.93
radians(180) = 3.1415926535898
sin(radians(60)) = 0.866025
sqrt(3)/2 = 0.86602540
degrees(asin(sqrt(3)/2)) = 60

Logaritmo e potência

log(2) = 0.693147
exp(1) = 2.718282
power(2,5) = 32.000000
log10(100) = 2.000000
mod(13,7) = 6
13%7 = 6
abs(-42) = 42
sign(0) = 0

Arredondamento

ceiling(2.5) = 3
floor(2.5) = 2
round(2.5) = 2
round(2.51) = 3
truncate(2.5,0) = 2

celing para cima
floor para baixo
round para o inteiro mais próximo
truncate elimina casas decimais

Obs: todas as funções de arredondamento também funcionam para números negativos

Funções de string

concat – concatema strings; pode receber 1-n parâmetros
substring – pega partes de uma string baseado na posição
substring_index – pega partes da string baseado nos delimitadores
instr – encontra strings em outras strigns
replace – modifica strings em outras strings
length – calcula o tamanho da string
like – compara strings utilizando wildcards

substring_index(“diegohellas@hotmail.com”, “@”, 1) = diegohellas
substring_index(“orders.mysql.com”, “.”, -2) = mysql.com
reverse(“orders.mysql.com”) = moc.lqsym.sredro
upper(“mysql”) = MYSQL
lower(“MySQL”) = mysql
rpad(“Diego”, 10, “.”) = diego…..
char(77,121,83,81,76) = MySQL
left(“Diego Felipe Hellas”, 3) = Die
mid(“Diego Felipe Hellas Moreira Alves”, 13,6) = Hellas
rught(‘Diego Hellas“, 6) = Hellas
trim(“Q”, from “QQQQMySQL ABQQQ”) = MySQL AB

Funções de tempo e de data

NOW() e intervalos

SELECT NOW() – irá retornar a data e hora atual do servidor MySQL no formato
aaaa-mm-dd hh:mm:ss

SELECT NOW() + INTERVAL 2DAY – irá retornar a data e hoira do servidor, só que com uma diferença de 2 dias para frente(ex: hoje é 2006-10-07 ele irá retornar 2006-10-09), essa diferença pode ser negativa também, e o intervalo pode ser horas, minutos, segundos, dias, semanas, meses, anos, etc;

Formatando datas com o DATE_FORMAT()

Sintaxe:
DATE_FORMAT(campo, ‘formato desejado’)

Especificador Descrição
%M Nome do mês (January..December)
%W Nome do dia da semana (Sunday..Saturday)
%D Dia do mês com o sufixo em Inglês (1st, 2nd, 3rd, etc.)
%Y Ano, numérico, com 4 dígitos
%y Ano, numérico, com 2 dígitos
%a Nome do dia da semana abreviado (Sun..Sat)
%d Dia do mês, numérico (00..31)
%e Dia do mês, numérico (0..31)
%m Mês, numérico (01..12)
%c Mês, numérico (1..12)
%b Nome do mês, abreviado (Jan..Dec)
%j Dia do ano (001..366)
%H Hora (00..23)
%k Hora (0..23)
%h Hora (01..12)
%I Hora (01..12)
%l Hora (1..12)
%i Minutos, numérico (00..59)
%r Horário, 12 horas (hh:mm:ss [AP]M)
%T Horário, 24 horas (hh:mm:ss)
%S Segundos (00..59)
%s Segundos (00..59)
%p AM ou PM
%w Dia da semana (0=Domingo..6=Sábado)
%U Semana (00..53), onde Domingo é o primeiro dia da semana
%u Semana (00..53), onde Segunda é o primeiro dia da semana
%% Caractere `%’.

Exemplos de utilização:

Lembrando sempre que o MySQL armazena as datas no formato aaaa-mm-dd

Para seleccionar a data no formato que usamos, ou de nossa necessidade:

SELECT nome, DATE_FORMAT(data_nascimento, ‘%d/%m/%Y’) AS data
FROM funcionários

Esse exemplo agora é muito útil, eu sempre uso quando eu tenho um formulário que tem um campo de data e essa data temque ser pesquisada no MySQL, com ela eu evito de ficar transformando a data de dd/mm/aaaa para aaaa-mm-dd

SELECT nome, departamento FROM funcionários
WHERE DATE_FORMAT(data_nascimento, ‘%d/%m/%Y’) = ‘22/11/1986’
Função DATEDIFF

Ela calcula a diferença em dias entre duas datas

SELECT DATEDIFF(’2006-12-31′, ‘2006-01-01′) = 364

Fonte: “Cábula” do MySQL – Pplware

Vamos dar uns toques em queries SQL?

Vamos dar uns toques em queries SQL?

Criado por Pedro Pinto em 28 de Maio de 2011 | 39 comentários

No âmbito de um projecto que estou a acompanhar, para desenvolvimento de um serviço Web desenvolvido em PHP e base de dados MySQL , lembrei-me que nunca tínhamos criado artigos com dicas sobre a linguagem SQL (Structured Query Language) no pplware. Nesse sentido, decidi arregaçar as mangas e, quem sabe, este não será o primeiro artigo de uma rubrica sobre SQL.

sql_00

Para quem não sabe, o SQL é uma das linguagens mais usadas no âmbito de aplicações que assentam em bases de dados. De uma forma muito simples, dentro de uma base de dados temos tabelas e dentro das tabelas temos registos. Imaginem por exemplo que têm uma base de dados com uma tabela que possui registos sobre pessoas. Essa tabela tem os campos (id_pessoa, nome, telefone, cor do cabelo, idade, morada). Através da linguagem SQL podemos efectuar queries (consultas) e saber por exemplo quantos registos temos na tabela, quantas pessoas têm o cabelo preto, quantas pessoas têm idade superior a 25 e inferior a 30, etc.

A linguagem SQL foi desenvolvida pela IBM em meados dos anos 70 e depois foi regulada por normas ANSI e ISO.De uma forma geral, através do SQL podemos eliminar, inserir e modificar registos numa base de dados relacional.

Está percebido para que serve a linguagem SQL? Espero que sim! Vamos agora começar por ensinar como usar o comando SELECT.

O comando SELECT permite seleccionar informação de uma ou várias tabelas.

Sintaxe de utilização
SELECT nome_campo FROM nome_tabela;

Para o presente exemplo, decidi criar uma base de dados com o nome db_pplware e com uma tabela com o nome tbl_pplware com os seguintes campos e dados:

tbl_00

Alguns exemplos

EXEMPLO 1

Objectivo: Seleccionar todos os dados

Query:

SELECT * FROM tbl_pplware;

Resultado: o resultado é o mesmo da tabela apresentada anteriormente.

EXEMPLO 2

Objectivo: Seleccionar apenas os nomes

Query:

SELECT nome FROM tbl_pplware;

Resultado

tbl_nome

EXEMPLO 3

Objectivo: Seleccionar nome e morada

Query

SELECT nome, morada FROM tbl_pplware;

Resultado

tbl_nome_morada

Deu para perceber? Se calhar, então o melhor mesmo para agora experimentar numa base de dados a sério. Para tal, o site w3schools.com disponibiliza um pequeno serviço onde podemos por em prática alguns comandos sobre SQL. Para testarem ó comando SELECT basta aceder ao serviço aqui e têm disponível a seguinte tabela para testarem as vossas queires.

tbl_000

Para finalizar, apenas gostava de saber qual a vossa opinião sobre esta rubrica. Parece-vos útil e importante? O objecto é começar do “zero” e ir apresentando alguns dos muitos comandos que a linguagem SQL disponibiliza. Aguardo o vosso feedback.

Artigos relacionados

PHP é a Quinta-Feira – Introdução ao JavaScript

PHP é a Quinta-Feira – Introdução ao JavaScript

Criado por Pedro Pinto em 26 de Maio de 2011 | 21 comentários

Por Pedro Peixoto para o PPLWARE

Como já vimos nos artigos anteriores, o PHP é uma linguagem server side, isto significa que é processado do lado do servidor, sendo que o utilizador que está a fazer o pedido ao servidor recebe uma página HTML já processada. Assim, e visto que à partida o servidor é controlado, apenas pessoas autorizadas acedem a todo o código PHP, ligações a bases de dados, sistemas de encriptação, o que o torna uma linguagem segura. No entanto, isto leva a perda de interactividade e flexibilidade, pois cada vez que é necessário executar código tem de se fazer um novo pedido ao servidor, e num ambiente WEB, os sistemas baseados em PHP perdiam muito em relação a tecnologias WEB como o Flash e o JAVA. Este problema foi soberbamente ultrapassado, recorrendo a uma linguagem de programação, que embora estivesse já solidamente integrada nos Browsers, não via aproveitados todos os seus atributos, falamos do JAVASCRIPT.

php_java

A partir de hoje vamos introduzir o Javascript nos nossos artigos, isto porque o PHP e esta linguagem andam sempre de mão dada. As duas acabam por se completar, o PHP pode processar rapidamente informação do lado do servidor, gerindo bases de dados, sessões, e conteúdos dinâmicos. O Javascript consegue oferecer a interactividade que é necessária na visualização de conteúdos WEB, pois é processado pelo browser do utilizador. Além disto, é uma linguagem orientada a eventos o que possibilita associar determinado código a uma determinada acção do cliente.

Para melhorar a associação PHP<->Javascript contribuiu muito o AJAX, mas este é um tema para um outro artigo que também terá espaço neste rúbrica.

Ultimamente os motores Javascript utilizados pelos Browsers têm tido desenvolvimentos consideráveis diminuindo o tempo e recursos de processamento, o que permitiu que o Javascript tivesse ganho a importância merecida.

Agora, com o surgimento do HTML5, põe-se em causa qual o rumo que o Javascript vai seguir, é certo que muitas das coisas que antes eram feitas com JS podem agora ser feitas directamente no HTML5, no entanto, o facto desta nova versão abrir as portas a novas funcionalidades, principalmente multimédia, acabam por dar uma importância acrescida ao Javascript.

Antes de terminar, não posso deixar de referir o jQuery, que será também abordado nos nossos artigos. O jQuery é uma biblioteca Javascript que facilita em muito a programação, uma vez que além de permitir realizar a maior parte das acções necessárias de forma simples, funciona em todos os browsers, e os plugins existentes oferecem uma variedade imensa de funcionalidades.

Em conclusão, e na minha opinião pessoal, o Javascript é uma linguagem com uma posição solidificada e com os seus propósitos bem definidos, está de boa saúde, em constante melhoria (processamento dos browsers), e com um futuro risonho à sua frente.

Na próxima semana iremos, então, ver na prática o bom funcionamento destas duas linguagens juntas. Mas como já percebi que vocês gostam de participar e complementar os artigos, deixo já alguns desafios básicos, para adiantar o próximo artigo.

  • Como se incorpora Javascript numa página HTML?
  • Como mostrar uma msgbox com informação ao utilizador?
  • Como redireccionar um utilizador através de Javascript?

Kit de desenvolvimento Sun SPOT – A Internet das coisas

Kit de desenvolvimento Sun SPOT – A Internet das coisas

Criado por Pedro Pinto em 12 de Maio de 2011 | 27 comentários

Uma plataforma de desenvolvimento para quem tem inspiração!

Nos dias de hoje, a Internet é constituída por milhões de computadores interligados através de redes de dados… mas algo está a mudar. A Internet das coisas é uma revolução tecnológica que representa o futuro da computação e da comunicação, em que tudo poderá comunicar como tudo (ex. computadores, electrodomésticos, carros, bicicletas, vestuário, etc). O aplicação deste “conceito inovador” depende de (nano) tecnologias como por exemplo as redes de sensores, RFID, sistemas ubíquos… e claro não esquecer que o IPv6 é fundamental para este “novo mundo nano tecnológico”.

Durante a parte curricular do meu Mestrado em Computação Móvel, na disciplina de Redes de Sensores, descobri a excelente plataforma de desenvolvimento Sun SPOT que permite o desenvolvimento de “coisas inovadoras”. Vamos conhecer o Kit de desenvolvimento Sun SPOT.

sunSpot_000

Antes da apresentação do kit de desenvolvimento apenas recordar o que é uma rede de sensores.

O que é uma rede de sensores?

As redes de sensores sem fios (RSSFs) ou em inglês Wireless Sensor Networks, são formadas por um grande número de sensores pequenos e plantados numa base ad hoc que detectam e transmitem características físicas do ambiente. Podem ser vistas como um tipo especial de rede ad-hoc (MANET – Mobile ad-hoc Network) e como uma das vertentes da computação ubíqua. Ver mais aqui.

Kit de desenvolvimento SunSpot

Depois da apresentação do Arduino, verificámos que os nossos leitores demonstram interesse pela área da electrónica e da programação. Nesse sentido decidi apresentar-vos hoje (para quem ainda não conhece) o Kit de desenvolvimento SunSpot (Sun Small Programmable Object Technology). Em traços gerais, a plataforma SunSpot é constituída por pequenos sensores e foi criada com o intuito de permitir o desenvolvimento de aplicações inovadoras e com aplicabilidade nas mais diversas áreas.

Principais características dos SunSpots

  • Desenvolvimento em Java (através do Netbeans ou Eclipse)
  • Fácil de programar e com muitos exemplos disponíveis na página do projecto
  • Consumo energético bastante baixo

Especificações técnicas

  • Micro controlador Atmel AT91RM9200 baseado no Processador ARM920T Core 32 bits, com 180 MHz, 512 KB RAM e 4MB de Flash
  • Antena de rádio Integrada na placa, standard IEEE 802.15.04 de 2.4 GHz
  • Bateria recarregável de lítio-ion de 3.6 V e 750 mAh;

SunSpot – Placa de Processamento

sunSpot_00

SunSpot – Sensores
  • Acelerómetro 2G/6G 3-axis;
  • Sensor de Temperatura;
  • Sensor de Luz;
  • 8 LEDs tri-coloridos;
  • 6 entradas analógicas por ADC;
  • 2 sensores de movimento (switches);

sunSpot_01

Aplicabilidade

Melhor que escrever, aconselhamos a verem os seguintes vídeos desenvolvidos com base neste Kit.

Como puderam ver no vídeo,  o responsável pelo projecto juntou um SunSPOT a bicicleta, a captura dos sensores é enviada para o computador que se encarrega da simulação.

SUN SPOT Game Controller for Counter Strike

Sun SPOT Telerobotics

Fascinados? Para mais informações sobre este kit pode consultar o site SunSpotWord onde existe muita informação disponível. Para quem percebe de Java, desenvolver projectos inovadores nunca foi tão fácil.

Alguém já trabalhou com este Kit?

Homepage: SunspotWorld

YouTube Create – Faça os seus vídeos sem câmara!

YouTube Create – Faça os seus vídeos sem câmara!

Criado por Pedro Simões em 26 de Março de 2011 | 4 comentários

O YouTube perdeu há algum tempo a sua vertente de simples repositório e tem alargado as suas fronteiras a ferramentas diversas, relacionadas com o seu negocio central, o vídeo. Têm sido disponibilizadas aos utilizadores pequenas aplicações ou serviços que permitem criar novas composições a partir de vídeos que foram previamente carregados para o YouTube.

Foi apresentada na passada 5ª feira mais uma novidade para os utilizadores deste serviço, e que permite que sejam criados vídeos dentro do próprio YouTube, sem que seja necessário o recurso a uma câmara de filmar ou outro equipamento que permite a recolha de vídeo. O YouTube Create é composto por 3 ferramentas distintas e vai com certeza ser do vosso agrado.

Estas três ferramentas estão disponíveis dentro do site do YouTube e aí podem criar três tipos diferentes de vídeos. Cada uma delas tem uma zona específica de trabalho e não se misturam. Para lhes acederem devem estar autenticados e autorizar que estas acedam aos dados da vossa conta.

Os serviços são fornecidos por empresas externas ao Youbute, mas estão perfeitamente integrados no Youtube, Esses serviços são Xtranormal, GoAnimate e Stupeflix. Tenham apenas em atenção que estes serviços são fornecidos de forma freemium, ou seja, têm uma vertente gratuita, mas alguns extra são pagos. É possível criarem vídeos de forma completamente gratuita, sem que tenham de comprar qualquer extra.

Xtranormal Movie Maker

O Xtranormal permite-vos criar animações CG e que com recurso a um ou dois personagens transponham para animação o texto que definirem. Podem definir quais as personagens, o ambiente onde se passa a cena e qual o guião da mesma. Podem definir o estado e a emoção com que cada personagem declama o seu texto..

GoAnimate

Com o GoAnimate vão poder criar animações de forma muito simples e ao mesmo tempo com grande liberdade de criação. Existem para já apenas dois cenários disponíveis para criarem o vosso vídeo. Cada cenário tem um grupo de personagens que podem usar na cena e que podem colocar a interagir entre elas.

Stupeflix Video Maker

O Stupeflix permite que criem vídeos com base nos vossos conteúdos digitais. Podem misturar fotos com vídeos e incorporar mapas com a localização onde estes foram capturados. Em poucos minutos e com recurso a conteúdos que enviem ou que esteja alojado em serviços como o Picasa, Facebook ou Flickr conseguem criar o vosso vídeo. Podem incluir ainda vídeo, áudio (de um conjunto disponibilizado, da conversão de texto para voz ou através do envio de áudio que tenham no vosso PC), transições ou texto.

O Stupeflix permite que criem de forma gratuita vídeos de 1 minuto com 360p. Acima disto e com qualidade superior é um serviço pago.

Estas três novidades que o Youtube disponibilizou para os seus utilizadores vai permitir que qualquer pessoa coloque um vídeo seu no Youtube. Não necessita de qualquer equipamento ou técnica especial. Basta um pouco de imaginação e a utilização de uma das ferramentas apresentadas. Fáceis, simples e com muitas potencialidades.

Homepage: Youtube Create

     

    Outro método de editar vídeos instantâneo é em www.vuvox.com. Bastante completo. Criei conta.

    PHP é à quinta-feira – Trabalhar com Datas

    PHP é à quinta-feira – Trabalhar com Datas

    Criado por Pedro Pinto em 19 de Maio de 2011 | 11 comentários

    Por Pedro Peixoto para o PPLWARE
    É impensável viver num mundo em que não existissem datas, em que não tivéssemos um calendário como forma de organização diária, de facto, as datas estão presentes em quase tudo, e como tal é muito comum necessitarmos de as usar nas nossas aplicações PHP.

    Sendo conhecido pela sua simplicidade e flexibilidade, o PHP torna muito fácil trabalhar com datas, bastando duas ou três funções para fazer preencher a maioria das necessidades dos programadores.

    Esta semana vamos aprender algumas das funções mais simples e importantes para a manipulação de datas em PHP.

    php1

    Existe uma quantidade enorme de funções para o tratamento de datas em PHP, aqui, vamos aprender apenas as mais simples e importantes. Mais uma vez, o objectivo do artigo é introduzir o leitor num determinado tema PHP, para que depois ele próprio possa explorar e aprofundar os seus conhecimentos sobre esse mesmo tema.

    Antes de começar, vamos apenas entender a diferença entre um formato de data legível pelos humanos e ounix timestamp. Convencionámos ao longo dos anos que determinados formatos de representação sugerem um determinado instante ou um dia, um mês, um ano. No entanto, esses formatos são de difícil tratamento, uma vez que obedece a uma estrutura complexa com meses com diferente número de dias, anos com mais ou menos um dia, etc…

    Surgiu, assim a necessidade de simplificar a representação de datas, para podermos tratá-las informaticamente. O mais famoso é o Unix timestamp, vulgarmente chamado apenas timestamp, e é também muito fácil de entender, no fundo é um número com a contagem dos segundos desde o dia 1 de Janeiro de 1970 às 00:00:00 sendo este o timestamp 0. Assim se subtrairmos o timestamp de ontem ao 12:00:00 ao de hoje ao 12:00:00, iremos obter o número de segundos que passaram entre os dois instantes, neste caso 86400 (1 dia). Torna-se assim simples a manipulação e o tratamento de datas. De seguida vamos conhecer algumas funções que tornam possível estas manipulações:

    Time

    Talvez a função mais simples seja a função “time”, esta função não recebe parâmetros pois retorna apenas o timestamp, mas é sem dúvida muito útil, seja em conjunto com outras funções ou mesmo em casos onde necessitamos apenas do timestamp.

    echo time(); //mostra o timestamp actual, ou seja os segundos que passaram até agora desde 1 de Janeiro de 1970
    Strtotime

    Esta função permite a conversão de inúmeros formatos de data em timestamp, assim, sempre que temos que tratar uma data (formato humano), esta função é uma grande ajuda. É uma função bastante versátil porque interpreta uma grande diversidade de formatos de data, o que a torna uma das minhas favoritas.

    echo strtotime(“now”); //devolve o timestamp actual, equivalente a time();
    echo strtotime(“2011-02-12 07:00:03″); //converte a data no seu timetamp, ou seja, nos segundos que passaram desde 1 de Janeiro de 1970 até ela.

    Pode inclusive ser usada para pequenos cálculos:

    echo strtotime("+1 day"); //devolve o timestamp de amanhã
    echo strtotime("+1 week"); //devolve o timestamp da próxima semana
    echo strtotime("next Thursday"); // devolve o timestamp da próxima quinta
    echo strtotime("last Monday"); // devolve o timestamp da última segunda

    Todos os cálculos são feitos relativamente à data actual, por isso quando pedimos “strtotime(“+1 day”);”, é-nos devolvida a data de amanhã. Contudo, esta função permite ainda que lhe seja passado um segundo parâmetro (timestamp) que serve como referência de partida para os cálculos, assim, por exemplo, para o dia 2011/05/12, vamos calcular o seu timestamp:

    $timestp=strtotime(“2011/05/12”);

    Agora já colocar este timestamp como referência de cálculo:

    echo strtotime("+1 day" , $timestp); //devolve o timestamp de 2011/05/13
    echo strtotime("+1 week" , $timestp); //devolve o timestamp da semana seguinte a 2011/05/12
    echo strtotime("next Thursday" , $timestp); // devolve o timestamp quinta-feira seguinte ao 2011/05/12   echo strtotime("last Monday" , $timestp); // devolve o timestamp segunda-feira anterior a 2011/05/12

    Podemos assim usar uma cadeia de “strtotime” de forma a realizar qualquer cálculo necessário. Esta é sem dúvida uma função poderosa.

    Date

    A função “date” é, em conceito, uma função de formatação de data, mas na prática é muito mais que isso, e em conjunto com as anteriores, torna todas as operações possíveis. Esta função é o contrário da “strtotime” já que permite converter um timestamp em data compreensível pelos humanos, assim:

    echo date("Y-m-d H:i:s",strtotime("+1 day”) ); //Devolve a data de amanhã

    O primeiro parâmetro indica o formato, enquanto que o segundo é o timestamp a converter. Existem inúmeros formatos que podem ser usados e que estão disponíveis na página da função. Se não for passado o segundo parâmetro, a função toma como referência o momento actual, vejamos:

    echo date("l"); // “l” devolve o dia da semana->”Thursday”
    echo date("d (l)"); // “d” devolve o dia, “l” devolve o dia da semana, ficaria “19 (Thursday)”
    echo date("M y"); // “M” devolve a abreviatura do mês, “y” devolve o ano com dois dígitos, ficaria “May 11”
    echo date("l \\t\h\e jS"); //o caracter “\” permite escrever texto pelo meio do formato, “j” devolve o dia do mês sem zeros, e o S devolve o sufixo ordinal (st, nd, rd or th), ficaria “Thursday the 3rd”.

    Podemos facilmente fazer o echo de um rodapé de copyright recorrendo a esta função:

    echo ’copyright &copy;’ . date("Y"); //copyright ©2011
    Conclusão

    Estas 2 últimas funções possibilitam praticamente todas as operações de datas que sejam necessárias em PHP, depois de um estudo aprofundado de cada uma delas e com um pouco de raciocínio é possível fazer cálculos impressionantes. No entanto existem muitas outras que também merecem atenção. Deixamos referenciadas a date_diff, date_add, mktime, microtime, entre outras também muito importantes.

    Sem dúvida que este é um tema bastante abrangente mas as portas estão abertas…