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

(Resolvido) Contador de cliques


Leandro Abbade

Pergunta

Boa noite moderadores e amigos,

Estou querendo fazer um contador de cliques.

Tenho a página:

contarcliques.php

<?

// instruções para conectar ao mysql e ao database
include('mysqlconecta.php');
include('mysqlexecuta.php');

// limpa espaços vazios trocando por nada
$url = addslashes(str_replace(" ","", $_GET['download'])); 

// procura se já existe o tal link na base
$query = mysql_query("SELECT * FROM tbl_bio_artigos WHERE download = '".$url."' ", $id); 

if(mysql_num_rows($query)) { 
   // atualiza o numero de cliques que já tem
   mysql_query("UPDATE tbl_bio_artigos SET cliques = cliques + 1 WHERE download = '".$url."'", $id);
}else {
   // atualiza o numero de cliques que já tem
   //mysql_query("UPDATE tbl_bio_artigos SET cliques = cliques + 1 WHERE download = '".$url."'", $id);
}

// redirecionar para a url
header("Location: ".$_GET['url']); 

?>
Na tbl_bio_artigos aonde quero fazer a contagem dos cliques nos arquivos para download tenho os seguintes campos:
`cod`, `nome`, `descricao`, `download`, `autor`, `postado`, `tags`, `cliques`
Para ver como está atualmente olhe o site: http://www.abbade.site40.net/bio_artigos.php Para ler os resultados da tbl_bio_artigos e colocar na tela eu faço assim:
<b>Cód: <?echo $row['cod'];?></b> - <b><?echo $row['nome'];?></b><br>
     Descrição: <?echo $row['descricao'];?><br>
     Autor(es): <?echo $row['autor'];?><br>
     Postado em: <?echo $row['postado'];?> -- Cliques: <?echo $row['cliques'];?><br>    
     Download: <? echo '<a href="'.$row['download'].'" target="_blank">'.$row['download'].'</a>'; ?><br><p></p>
Tentei assim direto no campo download:
contarcliques.php?url=biologia/artigoscientificos/Coleta de aranhas.zip

Aonde estou errando para contar os cliques?

Agradeço a todos e um ótima noite.

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Primeiro, é óbvio que isso não vai funcionar:

<a href="'.$row['download'].'" target=_blank">'.$row['download].'</a>

Pelo simples fato de que você está chamando direto o arquivo..

Segundo, no caso você deve chamar o arquivo pelo script php, como você colocou ai:

contarcliques.php?url=biologia/artigoscientificos/Coleta de aranhas.zip

Só que nesse contarcliques.php você deve chamar o header para forçar o download, isso vai fazer o navegador abrir a janela com o aviso para baixar o arquivo. use o primeiro exemplo para forçar o download.

Outra coisa, se você está guardando a informação do arquivo no BD, passe só um ID por querystring, e resgate a informação do endereço do banco de dados...

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde Serra,

O link biologia/artigoscientificos/Coleta de aranhas.zip ele está no campo 'download'.

Como estou iniciando neste mundo, ainda ando lendo manuais sobre diversos assuntos relacionados a PHP/Mysql.

você tem algum exemplo ou modelo de como fazer isso Serra?

Muito obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde amigos,

Primeiramente obrigado pela ajuda ESerra.

Peguei este modelo para contar cliques e acredito que irá atender ao que preciso, mas está com problema:

Arquivo: dl_wallpaper.php

<?php
$arquivoParaDownload = $_GET['wp'];
$filename = $arquivoParaDownload.".cliques.txt";
$currentClicks = (int) file_get_contents($filename);
delete($filename);
$fp = fopen($filename, "w+");
$newClicks = $currentClicks + 1;
fwrite($fp,$newClicks);
fclose($fp);
header("Content-type: application/octet-stream");
header("Location: $arquivoParaDownload");
?>
Coloquei no meu link assim:
dl_wallpaper.php?wp=biologia/artigoscientificos/Coleta de aranhas.zip
Quando clico no link aparece a mensagem de erro:
Warning: file_get_contents(biologia/artigoscientificos/Coleta de aranhas.zip.cliques.txt) [function.file-get-contents]: failed to open stream: No such file or directory in /home/a8616250/public_html/dl_wallpaper.php on line 4
e
Fatal error: Call to undefined function delete() in /home/a8616250/public_html/dl_wallpaper.php on line 5

O que pode estar ocorrendo?

Agradeço a atenção de todos.

Link para o comentário
Compartilhar em outros sites

  • 0

Primeiro erro, basta ler: failed to open stream: No such file -> Não encontrou o arquivo, lembre-se na web use apenas letras (a-zA-Z), números (0-9), - e _, outros itens podem trazer problemas.

Segundo erro: O PHP não tem nenhuma função chamada delete.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia ESerra,

É este aqui:

<?

// instruções para conectar ao mysql e ao database
include('mysqlconecta.php');
include('mysqlexecuta.php');

// limpa espaços vazios trocando por nada
$url = addslashes(str_replace(" ","", $_GET['download'])); 

// procura se já existe o tal link na base
$query = mysql_query("SELECT * FROM tbl_bio_artigos WHERE download = '".$url."' ", $id); 

if(mysql_num_rows($query)) { 
   // atualiza o numero de cliques que já tem
   mysql_query("UPDATE tbl_bio_artigos SET cliques = cliques + 1 WHERE download = '".$url."'", $id);
}else {
   // atualiza o numero de cliques que já tem
   //mysql_query("UPDATE tbl_bio_artigos SET cliques = cliques + 1 WHERE download = '".$url."'", $id);
}

// redirecionar para a url
header("Location: ".$_GET['url']); 

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Sempre que você tiver problema em uma query use OR DIE(mysql_error())

$query = mysql_query("SELECT * FROM tbl_bio_artigos WHERE download = '".$url."' ", $id) OR DIE(mysql_error()); 

if(mysql_num_rows($query)) {
   // atualiza o numero de cliques que já tem
   mysql_query("UPDATE tbl_bio_artigos SET cliques = cliques + 1 WHERE download = '".$url."'", $id)OR DIE(mysql_error());
}else {
   // atualiza o numero de cliques que já tem
   //mysql_query("UPDATE tbl_bio_artigos SET cliques = cliques + 1 WHERE download = '".$url."'", $id)OR DIE(mysql_error());
}

Outra coisa, dá uma consultada no manual, pois colocar:

if(mysql_num_rows($query)) {

Não tem lá muito sentido, você quer testar o que? Se veio alguma coisa na consulta anterior? Se for:

if(mysql_num_rows($query) > 0) {

Mais um detalhe:

$url = addslashes(str_replace(" ","", $_GET['download']));

Dá um echo no valor da $url e vê se está igual ao que está no banco...

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite ESerra,

Fiz assim:

<?

// instruções para conectar ao mysql e ao database
include('mysqlconecta.php');
include('mysqlexecuta.php');

// limpa espaços vazios trocando por nada
//$url = addslashes(str_replace(" ","", $_GET['download'])); 
$url = $_GET['download'];
echo("texto mais $url");

// procura se já existe o tal link na base
$query = mysql_query("SELECT * FROM tbl_bio_artigos WHERE download = '".$url."' ", $id) OR DIE(mysql_error()); 

if(mysql_num_rows($query)>=0) { 
   // atualiza o numero de cliques que já tem
   mysql_query("UPDATE tbl_bio_artigos SET cliques = cliques + 1 WHERE download = '".$url."'", $id) OR DIE(mysql_error()); 
}else {
   // atualiza o numero de cliques que já tem
   mysql_query("UPDATE tbl_bio_artigos SET cliques = cliques + 1 WHERE download = '".$url."'", $id) OR DIE(mysql_error()); 
}

// redirecionar para a url
//header("Location: ".$_GET['url']); 

?>
1) O echo retorna texto mais e não o que está em download. 2) O endereço da URL fica:
http://www.abbade.site40.net/contarcliques.php?url=biologia/artigoscientificos/Coleta_de_aranhas.zip

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite ESerra,

Creio que já estamos chegando ao fim e o mérito é todo seu.

Acredito que descobri aonde está o problema.

A url chama biologia/artigoscientificos/Coleta_de_aranhas.zip

No campo download tem contacliques.php?url=biologia/artigoscientificos/Coleta_de_aranhas.zip

Acredito que quando ele vai atualizar ele não encontra, porque o download é diferente de url

mysql_query("UPDATE tbl_bio_artigos SET cliques = cliques + 1 WHERE download = '".$url."'", $id)
Se eu faço sem o
WHERE download = '".$url."'"
ele atualiza todos os registros da tabela, mais deu para saber que está funcionando.
mysql_query("UPDATE tbl_bio_artigos SET cliques = cliques + 1, $id)

Como eu posso consertar isso?

Agradeço a atenção.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite ESerra,

OBRIGADO POR TUDO. Problema resolvido.

Criei um campo na tabela chamado caminho que recebe biologia/artigoscientificos/Coleta_de_aranhas.zip e faz a comparação com a url.

O código ficou assim:

<?

// conecta o banco
include('mysqlconecta.php');
include('mysqlexecuta.php');

// resgata a url
$url = $_GET['url'];

// atualiza a tabela
mysql_query("UPDATE tbl_bio_artigos SET cliques = cliques + 1 WHERE caminho = '".$url."'", $id) OR DIE(mysql_error()); 

// redireciona a url
header("Location: ".$_GET['url']); 

?>

Olha como ficou: http://www.abbade.site40.net/bio_artigos.php

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

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