Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

free4k

Como fazer contador de downloads semanal?

Recommended Posts

Olá gente! Tenho uma tabela MySql com o registro dos downloads feitos por cada postagem (valores totais, não semanais). Preciso de um contador de downloads semanal, para mim saber quantos downloads de cada postagem foram feitos em cada semana. Tenho conhecimento básico de PHP. Como posso fazer? Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A primeira coisa a se fazer é efetuar uma pesquisa junto a Google/Bing, tentar elaborar a primeiras linhas do algoritmo, pois o que pode ser simples para você, pode ser muito amplo e complexo para a comunidade, ou vice versa.

 

Se tiver alguma dúvida poste o script após elaborar as primeiras linhas do seu algoritmo. E se mesmo assim, ainda não compreendeu como funciona um fórum, de uma lida no post abaixo:

 

http://forum.imasters.com.br/topic/375800-orientaes-para-uma-boa-participao/

:thumbsup:

E para falar, que não tem exemplos no Google.

 

https://goo.gl/k9Nswb

Compartilhar este post


Link para o post
Compartilhar em outros sites

A primeira coisa a se fazer é efetuar uma pesquisa junto a Google/Bing, tentar elaborar a primeiras linhas do algorítimo, pois o que pode ser simples para você, pode ser muito amplo e complexo para a comunidade, ou vice versa.

 

Se tiver alguma dúvida poste o script após elaborar as primeiras linhas do seu algorítimo. E se mesmo assim, ainda não compreendeu como funciona um fórum, de uma lida no post abaixo:

 

http://forum.imasters.com.br/topic/375800-orientaes-para-uma-boa-participao/

 

:thumbsup:

 

O contador eu sei fazer, só quero saber como faço para cada semana pegar as informações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Como vou utilizar este código? Não entendi muito bem. No código que eu fiz ele faz um update no MySql a cada download do arquivo que o usuário faz, somando + um no valor.

SELECT FROM_DAYS(TO_DAYS(sales_time) -MOD(TO_DAYS(sales_time) -1, 7)) AS week_beginning,
       SUM(gross) AS total,
       COUNT(*) AS transactions
  FROM sales
 GROUP BY FROM_DAYS(TO_DAYS(sales_time) -MOD(TO_DAYS(sales_time) -1, 7))
 ORDER BY FROM_DAYS(TO_DAYS(sales_time) -MOD(TO_DAYS(sales_time) -1, 7))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tchê, vamos pensar um pouco, se a sua modelagem atual apenas adiciona +1 a cada download, como você espera separar isto por dias/semanas/meses/whatever? Não dá né... então, primeiro você terá que montar uma tabela para controlar os downloads, pode ser por dia mesmo, a partir disto você consegue montar o relatório.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então se já sabe, fica fácil né, mas não com essa modelagem de clique=clique+1

 

O correto é como mencionado no post #6, ir armazenando os cliques em outra tabela e data

 

Depois só somar

SELECT SUM(campo) as total FROM tabela WHERE yearweek(`datetime`) = yearweek(curdate()); 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensei em usar a função date() do PHP para poder saber o dia da semana, se o dia fosse sábado o contador zeraria, mas não daria muito certo. Como seria essa table?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postemos quase ao mesmo tempo, de uma olhada no post #7

 

Agora vi, estava fazendo uns testes. Então tenho que criar uma tabela pra gravar a id do post e a data do clique, vai criar um registro a cada clique, isso? A data completa ou só dias e/ou semana? Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Data do tipo Datetime. Exemplo

2015-05-11 22:06:41
CREATE TABLE `NewTable` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`id_down`  int(11) NULL DEFAULT NULL ,
`data`  datetime NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
);

No insert

INSERT INTO `NewTable` (`id_down`, `data`) VALUES ('{$id_down}',NOW());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, fiz o que me disse, ficou assim:

2EICWO4n.png

Tentei fazer dessa forma para testar, porém não funcionou:

require("conexao.php");
$conn = new Conexao();
$sql = mysql_query("SELECT SUM(data) as total FROM downloads WHERE yearweek('datetime') = yearweek(curdate())");
while($ln = mysql_fetch_array($sql)){
    $id = $ln['id_post'];
    echo $id . "<br/>";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
yearweek('datetime')

Coloque o nome do campo, era só um exemplo

SELECT SUM(`data`) as total FROM downloads WHERE yearweek(`data`) = yearweek(curdate())

Compartilhar este post


Link para o post
Compartilhar em outros sites

2EICWO4n.png

 

falta mais um campo aí.. coloca downloads int e vai contando os downloads dessa tal data..

 

ops.. vi que o id_post é do download ou do arquivo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Williams Duarte, fiz isso, porém está aparecendo um erro, que diz que "id_post", de "$ln['id_post'];" está indefinido.

AnimesMix, o id_post é a id da postagem, através da id vou pegar as outras informações. Neste código cada clique gera um registro no MySql. Agora, pensando bem, isso vai encher minha tabela, criando milhares de registros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu acho melhor voce usar PDO no seu sistema..

e pelo que estou vendo aí hmmm acho que está meio confuso essa contagem o_O"

 

eu tenho umas bases de fazer somas de posts e downloads no meu site mas ainda não fiz por dia

ou semana.. nesse seu exemplo aí como voce quer eu faria de outra maneira..

 

no mesmo campo do arquivo download eu colocaria a data lá.. é mais viavio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicionei a contagem a tabela, ficou assim:

 

amovZHXE.png

 

Porém o $ln[] não está funcionando. Será que fiz algo errado?

require("conexao.php");
$conn = new Conexao();
$sql = mysql_query("SELECT SUM('data') as total FROM downloads WHERE yearweek('data') = yearweek(curdate())");
while($ln = mysql_fetch_array($sql)){
    $id = $ln['count'];
    echo $id . "<br/>";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça um teste aí.. para contar os downloads faça uma página redirecionada quando clicar no download com o id do post aí fica primeira.


erro aqui >> http://puu.sh/hL5xb/19017da61f.png tire as aspas LoL

 

$sql = mysql_query("SELECT SUM(count) as total FROM downloads WHERE yearweek(data) = yearweek(curdate())"); LoL

 

 

 

aqui fica assim >> $id = $ln['total'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.