Foros del Web » Programando para Internet » PHP »

Mostrar películas más vistas de la semana (Php+MySql)

Estas en el tema de Mostrar películas más vistas de la semana (Php+MySql) en el foro de PHP en Foros del Web. Hola! Veréis llevo unos días dando vueltas a una idea pero no se me termina de ocurrir la forma de hacerlo. Os explico, estoy haciendo ...
  #1 (permalink)  
Antiguo 08/03/2013, 04:33
 
Fecha de Ingreso: febrero-2011
Ubicación: España
Mensajes: 16
Antigüedad: 13 años, 9 meses
Puntos: 0
Exclamación Mostrar películas más vistas de la semana (Php+MySql)

Hola!
Veréis llevo unos días dando vueltas a una idea pero no se me termina de ocurrir la forma de hacerlo.

Os explico, estoy haciendo una web de cine en la que puedes comentar y ver de que van las pelis (al estilo de Filmaffinity).
He pensado añadir en la página principal un "películas más vistas" donde muestre las películas más visitadas en los últimos días.

Quiero hacerlo en PHP + MySql, había pensado en hacer una base de datos que se actualice con cada visita a una película y guarde en cada fila el id de la peli y el timestamp.

El problema viene a la hora del algoritmo para mostrar las 5 pelis más vistas de la semana.
No se me ocurre como manejar los datos.
Alguna idea?

Muchas gracias! Un saludo.
  #2 (permalink)  
Antiguo 08/03/2013, 05:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Mostrar películas más vistas de la semana (Php+MySql)

Código MySQL:
Ver original
  1. SELECT idPeli,count(*) as nvisitas
  2. FROM visitas
  3. WHERE WEEK(date(campoDATETIME))=WEEK(DATE(NOW()))
  4. GROUP BY idPeli
  5. ORDER BY nvisitas DESC

Ahi tienes el id de las 5 peliculas mas visitadas de la semana actual.

Quizas seria mejor de los ultimos 7 dias puesto que el primer dia de la semana dara un resultado poco singnificativo.

WHERE date(campoDATETIME)>=DATE_SUB(DATE(NOW()), INTERVAL 7 DAY)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 08/03/2013 a las 05:42
  #3 (permalink)  
Antiguo 08/03/2013, 11:05
 
Fecha de Ingreso: octubre-2012
Mensajes: 135
Antigüedad: 12 años, 1 mes
Puntos: 8
Respuesta: Mostrar películas más vistas de la semana (Php+MySql)

Yo creo que seria mas facil que la tabla con las peliculas, tenga una columna que sea visitas, y cada vez que alguien vea la peli, que ese numero aumente, y solo tendras que hacer una busqueda. Hay un hilo sobre ranking que es muy parecido
  #4 (permalink)  
Antiguo 08/03/2013, 12:47
 
Fecha de Ingreso: febrero-2011
Ubicación: España
Mensajes: 16
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Mostrar películas más vistas de la semana (Php+MySql)

Muchas gracias quimfv por contestar.
He intentado aplicar lo que me has puesto pero no lo he conseguido. Esto es lo que he hecho:
La funcion de carga
Código PHP:
function top_movies(){
    
$timestamp time() - 604800//El tiempo actual menos el tiempo en segundos que dura una semana 
    
db_connet();
    if(
$row mysql_fetch_assoc(mysql_query('SELECT `movie_id`,count(*) as nvisitas FROM `visits` WHERE `timestamp` > \''.$timestamp.'\' GROUP BY `movie_id` ORDER BY nvisitas DESC LIMIT 5;'))){
        return(
$row);                
    }else{
        return (
0);
    }
    

he cambiado lo del timestamp por que no se por que con tu WHERE no funcionaba en el lanzador de consultas de phpmyadmin.



Lo que me imprime la función top_movies es:

Código:
Array ( [movie_id] => 37799 [nvisitas] => 14 )
solo la primera las otras 4 no.

Que se te ocurre que puede pasar?

Muchas gracias por la ayuda. Un saludo.



Cita:
Iniciado por quimfv Ver Mensaje
Código MySQL:
Ver original
  1. SELECT idPeli,count(*) as nvisitas
  2. FROM visitas
  3. WHERE WEEK(date(campoDATETIME))=WEEK(DATE(NOW()))
  4. GROUP BY idPeli
  5. ORDER BY nvisitas DESC

Ahi tienes el id de las 5 peliculas mas visitadas de la semana actual.

Quizas seria mejor de los ultimos 7 dias puesto que el primer dia de la semana dara un resultado poco singnificativo.

WHERE date(campoDATETIME)>=DATE_SUB(DATE(NOW()), INTERVAL 7 DAY)
  #5 (permalink)  
Antiguo 08/03/2013, 12:49
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 11 meses
Puntos: 51
Respuesta: Mostrar películas más vistas de la semana (Php+MySql)

Tenes que obtener las filas con un while, no como lo estas haciendo. Asi solo obtienes una
  #6 (permalink)  
Antiguo 08/03/2013, 13:11
 
Fecha de Ingreso: febrero-2011
Ubicación: España
Mensajes: 16
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Mostrar películas más vistas de la semana (Php+MySql)

No entiendo a que te refieres. Lo que hago es imprimir todo el array y solo hay esa fila.
Te refieres a que tengo que hacer un while de la peticion Mysql?

Cita:
Iniciado por walterdevel Ver Mensaje
Tenes que obtener las filas con un while, no como lo estas haciendo. Asi solo obtienes una

Etiquetas: informacion, mysql+php, peliculas, vistas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:54.