Foros del Web » Programando para Internet » PHP »

¿mensajes no leídos en un foro php?

Estas en el tema de ¿mensajes no leídos en un foro php? en el foro de PHP en Foros del Web. Hola a todos He buscado en el buscador de este foro pero nada... el caso es que tengo un foro creado en php desde cero ...
  #1 (permalink)  
Antiguo 08/04/2004, 04:09
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
Pregunta ¿mensajes no leídos en un foro php?

Hola a todos

He buscado en el buscador de este foro pero nada... el caso es que tengo un foro creado en php desde cero (cabezón que es uno y no quiere usar los de phpbb jaja), bueno pues la cosa es que más o menos es un foro que funciona y he logrado hacer casi todo lo que quería...

pero tengo un problemilla... no logro que se indiquen los mensajes que no ha leído a cada usuario... y mira que le he dado vueltas al asunto.. y al final he optado por indicar los mensajes nuevos de cada día (lo cual es un poco cutre para qeu lo vamos a negar)

¿alguien sabe como hacerlo? he pensado en cookies y una tabla para controlarlo pero no se como seguir

El foro es este http://www.eurovision-spain.com/foro y usa dos tablas una para los temas y otro para las respuestas enlazadas con un mismo "número" para identificarlas y otra con los datos de cada miembro registrado...

Gracias por adelantado..

PD: Algo más si a alguien se le ocurre como limitar el tamaño de las firmas se lo agradecería mucho mucho :)
  #2 (permalink)  
Antiguo 08/04/2004, 08:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si te guardas en una tabla los ID's de los mensajes que cada usuario ve (entra al mensaje) podrías ofrecer esa opción de mensajes "leidos" (y hasta si contestó .. marcarlo como que "partició" en el mensaje como hacen estos foros por ejemplo ..)

leidos
id_leidos
id_usuario
id_mensaje

Luego tendras que hacer consultas a tu BD de "leidos" cada vez que muestres los mensajes para determinar ("marcar") el mensaje como leido.

La cosulta sería por cada registro tipo

SELECT id_mensaje FROM leidos WHERE id_usuario="$id_usuario" AND id_mensaje="$id_mensaje"

donde .. $id_usuario sería el usuario autentificado en tu foro (tu variable de sesión o cookie o como sepas que usuario es el autentificado (ID, no nicks y cosas así .. mejor usar identificadores numéricos para indexar las tablas SQL)...

$id_mensaje .. será el que has obtenido de tu consulta tipica para mostrar esos mensajes.

Un saludo,

PD: la consulta SQL con "uniones" como JOIN y afines se podría optimizar mejor ..
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 08/04/2004 a las 08:12
  #3 (permalink)  
Antiguo 08/04/2004, 12:25
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
gracias

Gracias

esa es la idea que tenía pero me "echaba para atrás" porque esa tabla tendrá que incluir una barbaridad de datos ya que sería meter todos los "id" de los temas que hay (supongamos que 1000) y eso multiplicarlo por todos los usuarios que hay (unos 200) vamos que son unas 100.000 entradas ¿no serán demasiadas?

Es que pensé que tal vez había otra opción "menos evidente"

Gracias nuevamente
  #4 (permalink)  
Antiguo 08/04/2004, 13:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No, .. en realidad los ID's que ingresarías en esa tabla son los que (cada) usuario Visita .. no todos.

Habrá usuarios activos (como yo xDD) que tendrán esos 10.000 mensajes como "visitados" .. pero la mayor parte del resto de usuarios sólo tendran un bajo porcentaje de mensajes vistos.

Cuando me refiero a mensaje visto, me refiero a los que el usuairo a entrado al mensaje desde el listado de mensajes general del foro en cuestión.

La creación de ese registro de "leidos" lo harás en ese momento que lances la apertura de tu mensaje y lo muestres al usuario .. ahí capturas su "ID" de usuario y el "ID" del mensaje y haces el INSERT a tu BD ...

Si quieres funcionalidades en tus aplicaciones .. a veces requieren como es el caso de más recursos .. en este caso concreto de más datos que almacenar y gestionar, pero de eso se trata de aportar funcionalidades que el gasto de recursos vs útilidad sea requerido.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 08/04/2004, 13:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Lo otro que puedes hacer (menos exacto) es asumir la fecha de último ingreso al sistema y la del mensaje para decidir que esos mensajes hasta la fecha ya los vió (por lo menos el listado de temas ..).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 09/04/2004, 01:51
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
Muchíisimas gracias... lo había entendido al revés .... del modo que dices tiene mucha lógica... además mi foro tiene un sistema de autoborrado de últimos mensajes no activos (vamos que sólo dejo que haya 1000 mensajes por foro :)

Otra cosa, supongo que para introducir la opción de "marcar todos los mensajes como leídos" habrá que introducir de golpe su id de usuario y la de todos los temas de los foros...

De todos modos y bien pensado tampoco son tantos los datos ¿no?

muchas gracias de nuevo
  #7 (permalink)  
Antiguo 09/04/2004, 02:35
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
Algo más para los que estén pensando en usar este sistema... hay que verificar al entrar en un post que ya ha sido leído que no vuelva a introducir los datos otra vez y así duplicar entradas innecesarias.

REalmente es tan fácil como hacer una búsqueda en la BD en la tabla leidos y ver si el id_usuario y el id_mensaje se corresponden con los actuales de esa página :)
  #8 (permalink)  
Antiguo 09/04/2004, 03:44
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
ala pues ya está el sistema... gracias a todos :)

sólo decir que he tenido además que añadir en la página de publicar nueva respuesta un script para que borre todas las referencias a ese tema en la BD de modo que para todos es de nuevo "no leido", evidentemente eso no lo he hecho en la página para poner un nuevo tema ya que no es necesario :)
  #9 (permalink)  
Antiguo 11/04/2004, 19:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Me alegro mucho que el sistema funcione. Suerte.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 22:15.