lunes, 10 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

2 comentarios:

  1. Excelente post. Me ha resultado muy útil. Quiero destacar que tu explicaión es perfecta. Ahora solo queda saber si soy capaz de usarlo en la web que estoy creando.

    Echaré un vistao a tu blog porque parece interesante.

    Te mando un beso y mi gratitud.

    Luz Esmeralda

    ResponderEliminar
  2. Hola que tal... gracias por el tutorial, pero tengo un problema... lo ejecuto y me saltan estos dos errores, y no me muestra el resultado de la visita sino un texto que dice "array" me puedes ayudar?


    Errores:

    Notice: Array to string conversion in C:\wamp\www\Comprare\control\productos\contador-visitas.php on line 20

    Notice: Array to string conversion in C:\wamp\www\Comprare\control\productos\contador-visitas.php on line 21

    ResponderEliminar