Logo Hardware.com.br
Flavio_vivinho
Flavio_vivin... Geek Registrado
2.5K Mensagens 179 Curtidas

Contribuição - Contador de visitas

#1 Por Flavio_vivin... 21/07/2014 - 20:21
Olá, pessoal!

Venho dar minha contribuição com um código para contador de visitas que deixará o banco de dados de seu projeto bem magrinho hehe.

Se não me engano, peguei este código aqui mesmo no fórum. Editei e estou postando abaixo esta nova versão.

O diferencial é que não necessita mais arquivar os endereço de IP entre outros dados para depois somar e trazer a soma do total de visitas geral e do dia, etc....

Ele arquivará somente os IPs do dia para notificar quantas visitas diárias. Mas, mudando a data, o sistema apagará os registros com data diferente da vigente.

Nos contadores que tinha usado até aqui, usa a soma dos registros para exibir os totais, neste, essa obtenção do total de visitas se dá na leitura do id da última visita, pelo fato do id estar como auto_increment.

Por lógica, como não há deleção manual, o último id, em ordem decrescente limitando a um registro para exibir, sempre será o total dos registro que o bando teria. Ao apagar os registros do dia anterior, o id continuará contando as visitas como se estivesse arquivando cada registro.

Fiz vários testes antes de postar aqui. No meu pc (localhost) e no meu site está funcionando legal.

Bom, segue abaixo o php e o sql do contador.
[php]
<?php
/*************************************
*@Author:
Eduardo Stuart - eduardo@eduardostuart.com
*@Web:
http://www.eduardostuart.com
*@Description: Simples contador de visitas
que utiliza db-mysql
*@E-mail:
eduardo@eduardostuart.com
*************************************/

// Editado por Flávio Rocha - www.helcai.com

// Editado para melhorar o processamento no servidor por não ter mais que contar os dados e sim somente exibir o último registro auto incrementado para saber o total das visitas.

$host="localhost";
$user="root";
$pass="";
$db="teste3";
$tabela = "contador_visitas";

$conn = mysql_connect($host, $user, $pass) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($db);

$data = date("d/m/Y");
$ip = $_SERVER['REMOTE_ADDR'];

$sql_insert = "SELECT ip,data FROM $tabela WHERE data='$data' AND ip='$ip'";
$query = mysql_query($sql_insert,$conn);

if (mysql_num_rows($query) <= "0") {
mysql_query("INSERT INTO $tabela (data,ip) VALUES ('$data','$ip')");
}

$sql_total = "SELECT * FROM $tabela ORDER BY id DESC LIMIT 1";
$query = mysql_query($sql_total,$conn);
$assoc = mysql_fetch_assoc($query);
$idtotal = $assoc['id'];

$sql_hoje = "SELECT * FROM $tabela WHERE data='$data'";
$query = mysql_query($sql_hoje,$conn);
$total = mysql_num_rows($query);

// exibe dados
echo "Total de visitas: ".$idtotal;
echo ' ';
echo "Visitas de hoje: ".$total;

// deleta dias anteriores
$sqldel = "SELECT * FROM $tabela";
$querydel = mysql_query($sqldel,$conn);

while ($del = mysql_fetch_array($querydel)) {
$del_id = $del['id'];
$del_data = $del['data'];

if ($del_data != $data) {
mysql_query("delete from $tabela where id='$del_id'");
}
}
?>
[/php]

CREATE TABLE IF NOT EXISTS `contador_visitas` (
`id` int(30) NOT NULL AUTO_INCREMENT,
`data` varchar(10) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL DEFAULT '00/00/0000',
`ip` varchar(40) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Espero que gostem.
Até+
© 1999-2025 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal