Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Exibindo lista de visitas por mês


RodrigoGomes

Pergunta

olá pessoal..

eu não to conseguindo fazer um script.. que me mostre o número de visitas que teve cada mês, exemplo:

Abril de 2008: 200 visitantes

Março de 2008: 320 visitantes

Fevereiro de 2008: 260 visitantes

Janeiro de 2008: 410 visitantes

tendo no banco de dados: id, data, ip, pagina

o que já tenho feito é:

$sqlmes=mysql_query("select * from visitas") or die(mysql_error());
$loguser=mysql_num_rows($sqlmes);

while($logrow = mysql_fetch_array($sqlmes)){
$expdate = explode("-",$logrow['data']);
switch ($expdate[1]) {
        case "01":    $mes = Janeiro;     break;
        case "02":    $mes = Fevereiro;   break;
        case "03":    $mes = Março;       break;
        case "04":    $mes = Abril;       break;
        case "05":    $mes = Maio;        break;
        case "06":    $mes = Junho;       break;
        case "07":    $mes = Julho;       break;
        case "08":    $mes = Agosto;      break;
        case "09":    $mes = Setembro;    break;
        case "10":    $mes = Outubro;     break;
        case "11":    $mes = Novembro;    break;
        case "12":    $mes = Dezembro;    break;
}
echo'
                <tr class="row-a">
                    <td class="first">'.$mes.' de '.$expdate[0].'</td>
                    <td>0</td>
                </tr>';
}

porem travei ai..

se alguém tiver alguma idéia de como eu poderia fazer isso, ficaria muito grato.. abraços..

Editado por Vampyro
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Cara, o teu problema você provavelmente vai ter que resolver na própria query, algo com um COUNT em conjunto com GRUOP BY, o que eu tenho em mente não vai funcionar, mas é por ai... até dá pra fazer na parte de programação, mas vai ser pura gambiarra.

Se quiser eu movo o tópico pra parte de MySQL, que provavelmente você terá uma resposta satisfatória...

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, 'Vampyro' !

Veja se é isso que você quer:

select substring(data,1,7) as anomes, count(*) as nu_visitas from visitas where data >= '2008-01-01'
group by anomes;

Vai te mostrar quantas visitas por mes existiram em 2008.

Se não for o que você quer, segunda-feira penso em algo novo.

Link para o comentário
Compartilhar em outros sites

  • 0

+/-, bom vou explicar mais detalhadamente..

eu tenho no banco de dados os valores:

id, data, ip, pagina

1 - 23-05-2008 - 201.x.x.x - /index.php

2 - 23-05-2008 - 201.x.x.x - /index.php

3 - 20-05-2008 - 201.x.x.x - /index.php

4 - 05-03-2008 - 201.x.x.x - /index.php

5 - 07-01-2008 - 201.x.x.x - /index.php

6 - 30-12-2007 - 201.x.x.x - /index.php

7 - 23-12-2007 - 201.x.x.x - /index.php

beleza, este é o log de usuários, e eu quero exibir em uma página quantos usuários tiveram por mês.. independente do ano.. ficaria assim:

Maio de 2008: 3 visitas

Março de 2008: 1 visita

Janeiro de 2008: 1 visita

Dezembro de 2007: 2 visitas

não precisa esquentar a cabeça não, só me mostrar a forma de fazer isso que eu me viro com o resto.. abraços..

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, 'Vampyro' !

A resposta que dei no post anterior atende suas necessidades.

Para que o sql saia conforme você quer, inclui a cláusula order by conforme abaixo.

select substring(data,1,7) as anomes, count(*) as nu_visitas from visitas where data >= '2008-01-01'
group by anomes;

Agora, é só pegar o resultado da consulta acima e listar na página com poucas alterações para obter o efeito desejado.

PHP não é minha praia, por isso não posso te orientar como fazer naquela linguagem. Mas posso devolvê-lo à área de PHP para que o pessoal de lá te dê o BE-A-BA de como fazer.

Link para o comentário
Compartilhar em outros sites

  • 0

perfeito Denis!

era exatamente isso que eu queria..

obrigadão mesmo.. vai ai o código php caso futuramente alguém precise..

$sqlmes=mysql_query("select substring(data,1,7) as anomes, count(*) as nu_visitas from visitas where data >= '2008-01-01' group by anomes") or die(mysql_error());
$loguser=mysql_num_rows($sqlmes);

for ($z=0; $z<$loguser; $z++) {
$sqldate = mysql_result($sqlmes,$z,"anomes");
$sqlusers = mysql_result($sqlmes,$z,"nu_visitas");
$expdate = explode("-",$sqldate);

switch ($expdate[1]) {
        case "01":    $mes = Janeiro;     break;
        case "02":    $mes = Fevereiro;   break;
        case "03":    $mes = Março;       break;
        case "04":    $mes = Abril;       break;
        case "05":    $mes = Maio;        break;
        case "06":    $mes = Junho;       break;
        case "07":    $mes = Julho;       break;
        case "08":    $mes = Agosto;      break;
        case "09":    $mes = Setembro;    break;
        case "10":    $mes = Outubro;     break;
        case "11":    $mes = Novembro;    break;
        case "12":    $mes = Dezembro;    break;
}
echo'
                <tr class="row-a">
                    <td class="first">'.$mes.' de '.$expdate[0].'</td>
                    <td>'.$sqlusers.'</td>
                </tr>';
}

se quiser mover novamente para o php fique avontade, creio eu que lá este tópico se encaixa melhor para pesquisas.. abraços..

Editado por Vampyro
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...