Ver Mensaje Individual
  #3 (permalink)  
Antiguo 20/10/2007, 09:23
tuky
Usuario no validado
 
Fecha de Ingreso: julio-2003
Ubicación: <?="www.tuky.cl";?>
Mensajes: 132
Antigüedad: 21 años, 7 meses
Puntos: 4
Re: Como hacer un top semanal? (Los mas vistos en una semana)

Yo haría lo siguiente:

Crear dos tablas en mysql

noticias ->
`id`
`titulo`

hits ->
`id_noticia`
`views`
`fecha`

En la tabla hits alamcenarias el id de la noticia, contabilizas las visualizaciones de la noticia y en fecha guardas la semana y el año actual.

Se me ocurre algo así.

Registrar visualizaciones
Código PHP:
<?php

    $id_noticia 
$_GET['id'];
    
$semana_actual date("W-Y"); // Entrega la semana actual del año, ej: 42-2007 (la 42va semana del año 2007)

    
$sql "SELECT id_noticia FROM hits WHERE id_noticia = $id_noticia AND fecha = '$semana_actual'";
    
$result mysql_query($sql$conexion);
    if (
mysql_num_rows($result) > 0)
    {
        
$sql_new "UPDATE hits SET views = views + 1 WHERE id_noticia = $id_noticia AND fecha = '$semana_actual'";
    }
    else
    {
        
$sql_new "INSERT INTO hits VALUES ($id_noticia, 1, '$semana_actual')";
    }
    
    
mysql_free_result($result);
    
mysql_query($sql_new$conexion);
    
?>
Seleccionar 10 mas vistas de la semana actual
Código PHP:
<?php

    $semana_actual 
date("W-Y"); // Entrega la semana actual del año, ej: 42-2007 (la 42va semana del año 2007)

    
$sql "SELECT id_noticia, views FROM hits WHERE fecha = '$semana_actual' ORDER BY views DESC LIMIT 0, 10";
    
$result mysql_query($sql$conexion);
    while(
$r mysql_fetch_assoc($result))
    {
        echo 
$r['id_noticia'];
    }
    
    
mysql_free_result($result);
        
?>
Esa es la idea, habría que afinarla un poco

saludos,

tuky.-