PHP-MySQL: Filtrando o resultado por dia da semana

Entrando com mais um post pra galera animada do linhadecomando.com.

Me deparei com uma necessidade e compartilho com vocês.

Precisava montar um gráfico que exibisse a porcentagem de acesso por dia da semana.

Clique aqui para ver o gráfico.

Tenho uma tabela com uma coluna do tipo datetime, que guarda a data de acesso.

CREATE TABLE IF NOT EXISTS `nome_tabela` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data` datetime NOT NULL,
   PRIMARY KEY (`id`)
) ENGINE=MyISAM;
 
INSERT INTO nome_tabela (id, data) VALUES (NULL, '2015-04-16 02:00:09');

“Como contabilizar os acessos por data e mostrar o dia da semana correspondente”

É o que vamos ver abaixo:

<?php
// chamada para arquivo de conexão com
// o banco de dados    
include_once("conexao.php");
 
// função que retorna o dia da semana
function diaSemana($numero)
{
   switch($numero){
       case "0": $diasemana = "Segunda"; break;
       case "1": $diasemana = "Terça"; break;
       case "2": $diasemana = "Quarta"; break;
       case "3": $diasemana = "Quinta"; break;
       case "4": $diasemana = "Sexta"; break;
       case "5": $diasemana = "Sábado"; break;
       case "6": $diasemana = "Domingo"; break;
   }
   return "$diasemana";
}
 
// neste select foi usado a função WEEKDAY()
// WEEKDAY - Retorna um número de 0 a 6, identificando o dia da semana de uma data.
// MONTH( NOW( ) ) - mês atual
// YEAR( NOW( ) ) - ano atual
$sql = mysql_query("SELECT WEEKDAY( data ) as dia, count(*) as total
  FROM nome_tabela
  WHERE MONTH( data ) = MONTH( NOW( ) )
  AND YEAR( data ) = YEAR( NOW( ) )
  GROUP BY dia
  ORDER BY dia");
 
while($r = mysql_fetch_array($sql)) {
  echo diaSemana($r['dia']).": ".$r['total']."<br>";
}
?>

Resultado:
Segunda: 4
Quinta: 1
Sexta: 4
Sábado: 3
Domingo: 7

Atá a próxima!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *