Pues mira, lo pruebo ahroa y te comento editare este mensaje con el resultado
EDIT: Respuesta.
Pues mira, lo pruebo ahroa y te comento editare este mensaje con el resultado
Gracias lo hice rápido con un Tutorial y se me ocurrió hacer esto, espero tu respuesta para editar o no el post.
No lo he probado tal cual, si no que he realizado algunos cambios, ya sea porque está mal o porque usuamos diferentes apis para conectarnos con la base de datos mysql (en mi caso, uso la extensión
mysqli)
Comenzando por la creación de la tabla en la DB
CREATE TABLE `online` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`visitas` varchar(255) COLLATE latin1_spanish_ci NOT NULL,
`fecha` varchar(255) COLLATE latin1_spanish_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=1 ;
He cambiado el engine para adaptarlo a mi BD (InnoDB). En tu script pones como ID unico el campo 'id', pero debería de ser primary key. Esto es un poco por hacerlo a lo chapuza, ya que lo que debería de guardar sería el número de visitas que hace cada usuario, y luego sumarlas en total (Ahora solo guardas una fila con id 1, el número de visitas y el último día que alguien se conectó, con lo que la utilidad del campo id podría ser mejor, y no sólo almacenar un 1 para siempre).
Ahora con el script principal (la principal diferencia es el uso de
mysqli):
<?php
require ("conexionDB.php");
$consulta = "SELECT * FROM `online` WHERE fecha = '".date("d-m-Y")."'";
$res = $mysqli->query($consulta);
$rows = $res->num_rows;
$online = $res->fetch_array();
if($rows > 0) {
$resultado = $online['visitas'] + 1;
$consulta = "UPDATE online SET visitas = '".$resultado."' WHERE fecha = '".date("d-m-Y")."'";
}else{
$consulta = "INSERT INTO online (fecha,visitas) VALUES ('".date("d-m-Y")."','1')";
}
$mysqli->query($consulta);
?>
El contenido de "conexionDB.php" es este:
<?php
$mysqli = new mysqli("host_db", "usuario_db", "contraseña_db", "nombre_db");
if (mysqli_connect_errno()) {
printf("Falló la conexión: %s\n", mysqli_connect_error());
exit();
}
?>
Como ves es diferente al tuyo. La conexión a la base de datos yo la tengo definida en ese fichero ("conexionDB.php"). Hasta el if es todo igual, sólo que usuando mysqli.
Ahora bien, en tu script tienes 2 ejecuciones de la query, una para ver si el número de filas es mayor que 0 o no. Es decir que vas a ejecutar una si o sí, así que lo mejor es definir sólo la consulta que quieres hacer, y fuera del if ejecutarla.
Funcionar funciona, exactamente como lo tienes tu escrito no lo sé, pero tal y como te lo presento yo, funciona. Lo ideal sería definir el número de conexiones para cada usuario (y así aprovechar el campo id de la tabla en la BD para almacenar el id del usuario).
EDIT: He intentado modificar lo mínimo de tu script, pero se puede hace mucho más pequeño.