Ver Mensaje Individual
  #16 (permalink)  
Antiguo 11/08/2008, 11:07
marx-pola
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Consulta sobre contador para articulos y sistema de ranking

quinqui... amigos... creo haber encontrado la solución pero quisiera mostrarles lo que hice.
La tabla de la BDD es así:

CONTADOR4
id 1, 2, 3, 4...
id_rubro 1, 2, 3, 4...
visitas xx, xx, xx, xx...

Con el código que me pasó el genio de quinqui más una parte del otro código que había puesto, armé lo siguiente:

micrositio.php (llamo al contador.php con un include)
Lleva en la cabecera el inicio de sesion
Código PHP:
session_start(); 
contador.php
Código PHP:

//se requiere el archivo para validar los datos de usuario de bdd para conectar
require('configuracion.php');

//se asignan la variables
$idrubro trim($_GET['idrubro']);

$sql "SELECT visitas FROM contador4 WHERE id_rubro = '$idrubro'";  // consultas a la BD cual es en numero que hay actualmente en el campo de la BD contador
$result mysql_query($sql $conexion) or die ( mysql_error() );  

$row mysql_fetch_array($result);
$visitas $row['visitas']; // este es el valor de contador 


// manejamos la fechahora del ultimo acceso como "segundos"
// vale decir, como un numero entero
$ultimo_acceso $_SESSION["ult_acceso"]["$idrubro"];

// obtenemos los segundos del momento actual:
$ahora mktime(date("G"), date("i")+0date("s")+0date("n"), date("j"), date("Y"));

// si han pasado mas de 3600 segundos (1 hora) desde
// el ultimo acceso y ahora:
if ($ahora $ultimo_acceso >= 3600)
{

$visitas = ($visitas 1);

  
// guardas la visita en la base de datos
$sql2 "UPDATE contador4 SET visitas = '$visitas' WHERE id_rubro = '$idrubro' ";  // actualizas en la BD el numero de contador
$result2 mysql_query($sql2 $conexion) or die ( mysql_error() );

}

// aki guardas en la sesion el momento actual
$_SESSION["ult_acceso"]["$idrubro"] = $ahora;

// aki siguen tus codigos...

//creamos el condicionamiendo para loguearlo o no.
$sql3 "SELECT * FROM contador4 WHERE id_rubro = '$idrubro'";
$result3 mysql_query($sql3$con) or die("Error al leer base de datos: ".mysql_error);
$row mysql_fetch_array($result);

echo 
'<table width="20%" border="1" height="25">';
echo 
'<tr>';
echo 
'<td>Visitas: ' .$visitas '</td>';
echo 
'<td>id_rubro: ' .$idrubro '</td>';
echo 
'</tr>';
echo 
'</table>'
De esta forma, si es que no está mal hecha, la consulta busca el $idrubro de la tabla y si lo encuentra, automaticamente le suma 1 si se encuentra dentro de los 3600 seg, le suma 1 y no vualve a hacerlo por mas que se presione F5 y la misma sesion va sumándole visitas a los otros $idrubros.

Hasta ahora lo probé y funcionó. Si uds. ven algo q está mal, espero sus comentarios, por supuesto.

Igualmente, millones de gracias a todos y en especial a ti quinqui, maestro... por tu tiempo y tus ejemplos.

Un abrazo gigante. Marx.

PD: Con respecto a la sesion abierta cada vez que entra un visitante... esa sesion expira sola, se cierra sola o me falta agregarle alguna línea mas?
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.

Última edición por marx-pola; 11/08/2008 a las 11:23