Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal. Tenho uma tabela com registros de downloads efeituados, sendo que cada download faz um registro com a ID da postagem que contém o arquivo baixado. Preciso saber quantos downloads foram efeituados em cada ID. Alguém pode me ajudar?
/applications/core/interface/imageproxy/imageproxy.php?img=http://snap.ashampoo.com/uploads/2015-05-16/yvUQ96fR.png&key=37f777b3256a5a98d019f5b7a7c12a5274aa123a0fe86300d3095bee53d5c2eb" alt="yvUQ96fR.png" />
Obrigado.
>
Se você quer saber quantos downloads foram feitos do post com id 8, por exemplo, seria algo assim:
SELECT COUNT(id_post) FROM tabela WHERE id_post = 8;
Entendi. Fiz o código abaixo utilizando seu exemplo, porém acho que fiz algo errado, pois não mostrou os valores corretos, mostrou os valores: 4, 0, 2, 0, 5, 0.
<?php
require("conn.php");
$conn = new Conexao();
$sql = mysql_query("SELECT id_post, count FROM downloads WHERE yearweek(data) = yearweek(curdate())");
while($ln = mysql_fetch_array($sql)){
$id_post[] = $ln['id_post'];
$array = array_unique($id_post);
}
for($i = 0; $i < count($array); $i++){
$sql2 = mysql_query("SELECT COUNT(id) as teste FROM downloads WHERE id_post = '$array[$i]'");
if($ln2 = mysql_fetch_array($sql2)) {
echo $ln2['teste']."<br/>";
}
}<?php
require("conn.php");
$conn = new Conexao();
$sql = mysql_query("SELECT id, id_post, count FROM downloads WHERE yearweek(data) = yearweek(curdate())");
while($ln = mysql_fetch_array($sql)){
$total = mysql_num_rows(mysql_query("SELECT id FROM downloads WHERE id_post = '$ln[id]'"));
echo "Temos {$total} downloads no post {$ln[id_post]}";
}Use count
SELECT id_post, count( id_post )
FROM downloads
GROUP BY id_post
Mateus Silva, não sei o porquê, mas o código retornou em branco.
Electronic, dessa forma? ▼
<?php
require("conn.php");
$conn = new Conexao();
$sql = mysql_query("SELECT id_post, count( id_post ) FROM downloads GROUP BY id_post");
while($ln = mysql_fetch_array($sql)){
echo $ln['id_post'];
}
Obrigado!
debugue o código, veja o que vem em $ln['id_post']; porque o que mandei la em cima era pra funcionar
1. Pra que esta linha?
$conn = new Conexao();
O que faz essa classe Conexao? Você a instancia em $conn mas nunca usa essa variável...
2. Seu código está obsoleto. Não use mysql_connect etc. Funções mysql_* estão obsoletas desde o PHP 5.5. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql
A ideia geral, usando MySQLi, é:
$my = new mysqli( 'servidor', 'usuario', 'senha', 'banco' );
$sql = "SELECT COUNT(*) AS total FROM tabela";
$exec = $my->query( $sql );
$f = $exec->fetch_assoc();
echo $f['total'];
edite $sql, para corresponder à consulta que você deseja
Essa Conexão() está dentro de conn.php, que tem os dados de conexão. Se eu soubesse antes, agora não posso mudar para MySQLi ou PDO, pois já fiz praticamente todo o site utilizando mysql_. Vou fazer mais alguns testes para tentar descobrir porque o código do Mateus Silva não funcionou, em seguida retorno.
Consegui, porém está exibindo os resultados repetidos, pois cada id ele escreve na tela, tem como escreve somente uma vez por id?
/applications/core/interface/imageproxy/imageproxy.php?img=http://snap.ashampoo.com/uploads/2015-05-19/LJUW309s.png&key=11265efba443cb42e2b8def8e3641332872e07b89c8e29d938efd58a141b1ed2" alt="LJUW309s.png" />
Handoncloudsys, preciso que cada download seja um registro, pois assim posso usar yearweek(data) = yearweek(curdate()) para obter os downloads semanais. Tentei transformar em array e usar array_unique(), porém não funcionou.
Agora consegui. Está aqui o código:
<?php
require("conn.php");
new Conexao();
$sql = mysql_query("SELECT * FROM downloads WHERE yearweek(data) = yearweek(curdate())");
while($ln = mysql_fetch_array($sql)){
$total = mysql_num_rows(mysql_query("SELECT id FROM downloads WHERE id_post = '" . $ln['id_post']. "' and yearweek(data) = yearweek(curdate())"));
$array[$ln['id_post']] = $total;
}
echo "<pre>";
print_r($array);
echo "</pre>";
Se você quer saber quantos downloads foram feitos do post com id 8, por exemplo, seria algo assim: