contador visitas interno MySQL

Iniciado por securedigital, 26 Abril 2007, 18:29 PM

0 Miembros y 1 Visitante están viendo este tema.

securedigital

Hola a todos.

Saben de algun script que haga la funcion de un contador de visitas ( como los que hay en cualquier sitio de recursos web ) PERO que los usuarios no vean ese contador, de forma que pense en que cada vez que alguien entre al web se agrege en una BD mysql un numero , como si se tratara de un autoincrement asi sabiendo las visitas totales del site.

Alguna idea de como hacerlo o si ya esta el script hecho?

Saludos
The man who whispered to the computers
Der Mann, der zu den Computern flüsterte

                                                 FAD58DE7366495DB4650CFEFAC2FCD61

                                    

deya

Pues sencillo: modifica tu código de tal forma que a la hora de contar las visitas las guarde en tu base de datos y elimina el echo del código para que no se muestre el número de visitas en el navegador.

Salu2  ;)
"No es mas pobre el que tiene poco, sino el que mucho ambiciona" Charles Chaplin.


securedigital

#2
Hola

Cogi un codigo y lo modifique un poquito, pero no me funciona, puede decirme que hay mal¿



<?
$host="localhost";
$user="XXXXXXXXXXXX"; //usuari de la base de dades
$pass="XXXXXXXXXXXX"; //password de la base de dades
$db="estadisticas"; //nom de la base de dades

$conexion = mysql_connect($host,$user,$pass);
mysql_select_db($db,$conexion);
// $con es el identificador de la conexion con la base de datos
function visitas($con) {
// Tiempo que se guardará la cookie (Por defecto 10 minutos)
$minutos = 10;
// ------------------
$laFecha = getdate();
$mesActual = $laFecha["mon"];
$anioActual = $laFecha["year"];
$resultadoSQL = mysql_query("SELECT * from estadisticas WHERE mes=$mesActual AND año=$anioActual",$con);
if(mysql_num_rows($resultadoSQL) == 0) {
$actualizacion = mysql_query("INSERT INTO estadisticas (mes, año, visitas) VALUES ($mesActual, $anioActual, 0)",$con);
}
$resultadoSQL = mysql_query("SELECT SUM(visitas) from estadisticas",$con);
$datosStats = mysql_fetch_row($resultadoSQL);
$total = $datosStats[0];
$resultadoSQL = mysql_query("SELECT * from estadisticas",$con);
$datosMensual = mysql_fetch_row($resultadoSQL);
$elMes = $datosMensual[0];
$elAnio = $datosMensual[1];
$visitasDelMes = $datosMensual[2];
$visitante = $_COOKIE['misVisitas'];
if(!isset($visitante)) {
  setcookie("misVisitas","visitante",time()+(60*$minutos),"/");
  if($mesActual!=$elMes) {
  $delMes=0;
  }
  $total++;
  $visitasDelMes++;
  $actualización = mysql_query("UPDATE estadisticas set visitas=$visitasDelMes WHERE mes=$mesActual AND año=$anioActual",$con);
}
$resultadoVisitas[0] = $total; //Total de visitas en la página
$resultadoVisitas[1] = $visitasDelMes; //Visitas totales del Mes actual
return $resultadoVisitas;
}

?>
The man who whispered to the computers
Der Mann, der zu den Computern flüsterte

                                                 FAD58DE7366495DB4650CFEFAC2FCD61

                                    

securedigital

Si el codigo esta tremendamente mal y no se puede arreglar " no lo he manipulado tanto...." habria algun otro que vosotros conozcais que cuente las visitas de la web en mysql¿



Saludoos
The man who whispered to the computers
Der Mann, der zu den Computern flüsterte

                                                 FAD58DE7366495DB4650CFEFAC2FCD61

                                    

SirLanceCC

Puedes hacer algo asi en el code de tu pagina


bla bla bla
bienvenidos a mi pagina
<?php
$ahora 
time();
mysql_connect('localhost''user''pass');
mysql_db_select('database'); //No estoy seguro si es así o select_db
mysql_query("INSERT INTO tabla VALUES ($ahora) ");
?>



Bueno algo así, se me hace lo más sencillo, se registrará la hora y dia en que se visito. Obviamente debes crear una tabla con un campo que sea un int(40) (de 40 bytes porque time devuelve unos enteros muy grandes).

Luego puedes recuperar las visitas totales con
mysql_query("SELECT count(*) FROM tabla");
creo que sería algo así.

Espero sea de ayuda

securedigital

Hola

Perfecto, ya lo tengo todo montado, incluso con nº de identificacion para usuarios con auto_increment , registro de las ip\\\'s y la hora.

Gracias


Ahora me surge un pequeño problema, esta tabla con el tiempo ira creciendo y se puede hacer enormeeee, por eso desde MySQL estaria bien limita la tabla a un maximo de registros, por ejemplo 1000 y que una vez llegue al nº 1001, en vez de crear mas registros, sustituya el registro nº 1 que se hizo hace muucho tiempo y así sucesiavamente, despues que sustituya al registro nº 2 , ....etc

La verdad es que no se como hacer esto con MySQL, o alguna cosa parecida para que la tabla no me llegue a ocupar decenas de MB, alguna idea?


Saludos
The man who whispered to the computers
Der Mann, der zu den Computern flüsterte

                                                 FAD58DE7366495DB4650CFEFAC2FCD61