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.-