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!