Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Foro; temas recientes no leídos.

Estas en el tema de Foro; temas recientes no leídos. en el foro de PHP en Foros del Web. ¡Hola! Estoy programando un foro, y estoy pensando en poner una sección de "Temas recientes en el foro" en el que estén los temas que ...
  #1 (permalink)  
Antiguo 28/03/2014, 13:50
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 7 meses
Puntos: 5
Foro; temas recientes no leídos.

¡Hola!

Estoy programando un foro, y estoy pensando en poner una sección de "Temas recientes en el foro" en el que estén los temas que el usuario no ha visto y que sean recientes. El problema es que sé como hacerlo; se me ocurre tener una tabla en la base de datos con todos los temas y después otra tabla aparte donde poner los usuarios y el tema que no ha visto; eso se tendría que hacer cada vez que otro usuario crea un tema y encima con todos los usuarios de la web, si me imagino que hay 10.000 usuarios, ¡tendría que crear una fila para todos incluso para los inactivos, eso ocuparía mucha memoria y tardaría en enviar mucho los temas! .

También se me ocurre tener una tabla donde estén los temas que crean los usuarios y después que cuando el usuario le de a "Temas recientes" coja una fecha y a partir de esa fecha vaya cogiendo todos los temas en los que no haya comentado después de esa fecha, para ello, tendría que consultar la tabla donde están los mensajes alojados, pero, ¿cómo podría hacer eso en una sola sentencia? Me refiero a coger los temas y a la vez ver si ha comentado o no. ¿Tardaría mucho en cargar si pongo eso?

Espero que no os haya liado mucho, si queréis os lo puedo explicar de otra forma si no os habéis enterado de esta. No se me ocurre otra forma de hacerlo y que no sea una locura, ¿qué podría hacer? Vosotros diréis si es o no una locura...

Muchas gracias,
Enrique.

PD: Algo parecido me pasa con los "Temas actualizados" donde tendría que avisar a todos aquellos que han publicado en el tema anteriormente y que haya publicado otro usuario después que él, después de una fecha.
  #2 (permalink)  
Antiguo 28/03/2014, 14:33
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: Foro; temas recientes no leídos.

Hola iEnrique.

Se me ocurre una estructura muy basica asi:

Usuarios:
id_usuario|nombre
PK: id_usuario AI

Temas:
id_tema|fecha|id_autor|mensaje
PK: id_tema AI
FK: id_autor -> usuarios.id_usuario

Mensajes:
id_mensaje|id_tema|id_usuario|fecha|mensaje
PK: id_mensaje + id_tema
FK: id_tema -> temas.id_tema
FK: id_usuario -> usuarios.id_usuario

Visitas:
id_tema|id_usuario|fecha
PK: id_tema + id_usuario
FK: id_tema -> temas.id_tema
FK: id_usuario -> usuarios.id_usuario

Ahora bien.

Cuando un usuario publica un nuevo tema, lo guardas en Temas y nada mas.
Cuando un usuario visita un tema insertas o actualizas el registro de la tabla visitas con los datos del tema , usuario y la fecha
Cuando un usuario envia un mensaje nuevo lo guardas en mensajes y nada mas.

Para cada usuarios tendrias:
Los temas que no visito son los que existen pero no estan en la tabla de visitas.
Los temas que visito y tienen mensajes nuevos, son aquellos en los que la fecha de la tabla visitas es menor a la fecha del ultimo mensaje publicado
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 28/03/2014, 16:17
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años, 7 meses
Puntos: 5
Respuesta: Foro; temas recientes no leídos.

¡Genial! Has resulto todas mis dudas, ¡muchas, muchas gracias!

Etiquetas: fecha, foro, tabla, temas, usuarios
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 14:43.