PHP - Noticias top de la semana

 
Vista:

Noticias top de la semana

Publicado por Hernán (13 intervenciones) el 26/02/2010 15:54:01
Hola estoy diseñando un sitio de noticias y me piden que se muestren los titulos de las 5 noticias mas vistas en la semana y que a la semana que viene estas cinco se modifiquen. O sea que se modifica semanalmente.
Como hago para crear esto en php y con base de datos mysql? Me estoy rompiendo la cabeza y no me sale nada.

Desde ya muchas gracias y espero su respuesta. Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Noticias top de la semana

Publicado por Diego Romero (1450 intervenciones) el 26/02/2010 17:35:52
Más datos por favor: ¿Cómo es la definición de la base de datos?, ¿cómo determinas las visitas de una noticia y cómo las almacenas/cuentas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Noticias top de la semana

Publicado por Hernan (13 intervenciones) el 26/02/2010 18:12:56
Hola Diego, la base de datos tendria una tabla noticias, con un id, fecha, titulo, descripcion, foto y un contador de visitas. La idea seria poder almacenar los ingresos de los usuario al hacer click sobre el titulo de la noticia y que luego en un costado de la pantalla me muestre las 5 o 6 noticias mas leidas de la semana, a la semana siguiente eso se renueva segun fechas de noticias.

Espero haberme explicado mejor. Gracias por responderme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Noticias top de la semana

Publicado por Diego Romero (1450 intervenciones) el 26/02/2010 20:30:43
El primer problema que veo aquí es que puede darse el caso que durante la semana no haya 5 noticias que hayan sido leídas. Este caso podría darse en las primeras horas del primer día de la semana, cuando todavía nadie ha ingresado al sitio. Teniendo eso en cuenta comprenderás que la consulta que describo a continuación podría devolverte cero resultados.

Lo primero es determinar qué fecha es el primer día de la semana. Eso es fácil:

El primer día de la semana es el domingo, la fecha del domingo pasado fue 21 de febrero, entonces:

<?
$diasem = date("w");
$fechadom = date("d/m/Y", mktime(0, 0, 0, date("m"), date("d")-$diasem, date("Y")));
echo $fechadom;
?>

No sé qué formato de fecha estás usando en tu tabla, yo en vez de usar el tipo datetime almaceno el timestamp de UNIX en un int(11) tal como lo devuelve la función time() o mktime() de PHP.

Teniendo este dato la consulta SQL sale sola:

SELECT * FROM noticias WHERE noticias.fecha >= $fechadom ORDER BY noticias.contador DESC LIMIT 5;

Y eso es todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Noticias top de la semana

Publicado por Hernan (13 intervenciones) el 26/02/2010 23:23:47
El formato con que probe la fecha en mi tabla es "date". Como hago para que el contador se vaya incrementando con las visitas y poder guardarlo en la base de datos?

Gracias por lo explicado lo pondré a prueba.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Noticias top de la semana

Publicado por Diego Romero (1450 intervenciones) el 27/02/2010 18:01:07
Primero lees el valor del contador actual:

SELECT contador FROM noticias WHERE noticias.id = $id_de_la_noticia;

Y luego lo sumas

$row["contador"]++;

Y lo guardas:

UPDATE noticias SET contador = $row["contador"]++ WHERE noticias.id = $id_de_la_noticia;

Easy
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Noticias top de la semana

Publicado por Hernán (13 intervenciones) el 27/02/2010 19:11:10
Ya pude solucionar en parte el problema. Gracias y saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar