martes, 11 de enero de 2011

Como hacer un contador de visitas en PHP y MySql

Hola amigos programadores, en este caso les voy a explicar como crear un contador de visitas para nuestros sitios web utilizando bases de datos.

Bien pues este programa corre sobre PHP y MySql.

Comenzamos por crear nuestra base de datos, la cual contendrá solo una tabla con el nombre visitas, la cual tendrá esta estructura:

CREATE TABLE `visitas` (
`idVisita` int(11) NOT NULL auto_increment,
`fecha` varchar(20) NOT NULL,
PRIMARY KEY (`idVisita`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Una vez creada nuestra tabla, explico como funciona:
Cuando el usuario entra a su sitio, este ejecuta un código que inserta un nuevo registro en nuestra tabla visitas, pero hay un problema, que si este usuario vuelve a cargar la pagina nos creará otro registro. Esto no debe ocurrir ya que seria alterar mucho nuestra estadística, pues bien, para remediar esto vamos a ocupar una variable de sesión, la cual se inicializará cuando se abra la pagina por primera vez y ahí estará presente mientras el usuario no cierre la ventana de nuestro navegador, con esto, podemos volver a cargar nuestra pagina sin temor a que nos aumente el numero de registros y solo lo haga para las visitas reales.

Para esto creamos un archivo php, lo llamaremos "visitas.php" el cual debe llevar el siguiente codigo:

session_start();
$ya = $_SESSION['ya'];
$bd_host = "localhost";
$bd_usuario = "usuario";
$bd_password = "12345";
$bd_base = "BDvisitas";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
if($ya==null){
$insertar = "insert into visitas (fecha) values (now())";
mysql_query($insertar,$con);
$ya= "ya esta";
$_SESSION['ya'] = $ya;
}
$hoy = mysql_fetch_array(mysql_query("select count(*) from visitas where fecha=now()",$con));
$total = mysql_fetch_array(mysql_query("select count(*) from visitas",$con));

echo("Visitas de hoy: $hoy --");
echo("Visitas en total: $total");
?>

NOTA: para que este código se ejecute usted debe poner sus propios datos (servidor, usuario, contraseña y el nombre de la BD donde creó la tabla visitas)

Funcionamiento:

session_start();
esta instrucción nos permite trabajar con sesiones, es muy importante que sea la primer linea de código después de la etiqueta "

$ya = $_SESSION['ya'];
Recoge la variable de sesión y la almacena en la variable $ya
$bd_host = "localhost";
Es el nombre de nuestro servidor de bases de datos
$bd_usuario = "usuario";
Es el nombre de nuestro nombre de usuario de la base de datos
$bd_password = "12345";
Es la contraseña de usuario de la base de datos
$bd_base = "BDvisitas";
Es el nombre de la base de datos
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
Crea una conexión al servidor
mysql_select_db($bd_base, $con);
Selecciona la base de datos con la que vamos a trabajar
if($ya==null){
Verifica si la variable de sesión esta vacía, significa que es visita nueva
$insertar = "insert into visitas (fecha) values (now())";
Instrucción que inserta en la tabla
mysql_query($insertar,$con);
Crea un nuevo registro en la tabla
$ya= "ya esta";
Una vez creado el registro, le damos un valor a la variable de sesión para que cuando vuelvan a cargar la pagina, ya no lo tome en cuenta (mientras no se cierre el navegador, ya que al cerrarlo todas las sesiones se finalizan por default)
$_SESSION['ya'] = $ya;
Aquí guardamos el valor de la sesión

$hoy = mysql_fetch_array(mysql_query("select count(*) from visitas where fecha=now()",$con));
Esta instrucción recoge el numero de visitas del día de hoy
$total = mysql_fetch_array(mysql_query("select count(*) from visitas",$con));
Esta instrucción recoge el numero de visitas en total

echo("Visitas de hoy: $hoy --");
Imprime el numero de visitas de hoy para poder visualizarlas
echo("Visitas en total: $total");
Imprime el numero de visitas totales para poder visualizarlas


Espero y les sirva, cualquier duda dejen sus comentarios