[Bulma] Consulta de PHP, resaltar mensajes no leidos en un foro.

Hugo Chinchilla hugo en bulma.net
Dom Feb 24 22:05:11 CET 2008


El 24/02/08, Miguel Gonzalez Castaños <miguel_3_gonzalez en yahoo.es> escribió:
> Hugo Chinchilla escribió:
>
> > El 23/02/08, Miguel Gonzalez Castaños <miguel_3_gonzalez en yahoo.es> escribió:
>  >
>  >> Hugo Chinchilla escribió:
>  >>
>  >>
>  >>> Saludos, tengo un problemilla con una aplicación que estoy haciendo en
>  >>>
>  >>  > PHP, a ver si me podéis ayudar.
>  >>  >
>  >>  > La aplicación es muy similar a un foro, necesito poder resaltar los
>  >>  > mensajes nuevos cada vez que un usuario accede al sistema, lo primero
>  >>  > que he pensado ha sido en usar la fecha de ultimo acceso del usuario y
>  >>  > la fecha de ultima modificación del post para marcarlo o no, pero me
>  >>  > han surgido un par de problemas:
>  >>  >
>  >>  > ¿cuando actualizo la fecha de ultimo acceso? si la modifico al entrar
>  >>  > todos los mensajes serán más antiguos, si lo hago en el momento del
>  >>  > logout los usuarios que prefieran que el navegador les mantenga la
>  >>  > sesión verán falsos mensajes no leídos.
>  >>  >
>  >>  > Además de que de esta manera si el usuario entra, no lee nada y sale,
>  >>  > cuando vuelva a entrar no los verá resaltados.
>  >>  >
>  >>  >
>  >>  > La otra idea es que cada vez que se inserte nuevo contenido en el foro
>  >>  > añadir el id del mensaje a una lista de mensajes no leídos que tendrá
>  >>  > cada usuario, aunque esto me parece un poco bestia, la aplicación no
>  >>  > tendrá mas de 50 usuarios por lo que sería viable, pero no me parece
>  >>  > la mejor manera.
>  >>  >
>  >>  > ¿Que me sugerís?
>  >>  >
>  >>  >
>  >>
>  >> No es por nada pero no queda muy claro el sistema que tienes, con lo que
>  >>  es difícil que te podamos ayudar.
>  >>
>  >>  A mi humilde entender, tienes que tener un campo cuando el usuario hace
>  >>  logout en que pongas la fecha y hora en que salio el usuario (lo mismo
>  >>  con el ultimo login). Entonces si los mensajes que tienes tienen fecha,
>  >>  la comparas con esa fecha y si se han creado despues de que entrara el
>  >>  usuario, se los puedes mostrar.
>  >>
>  >>  La verdad, no se entiende muy bien que es lo que quieres hacer, con lo
>  >>  que repito es dificil ayudarte
>  >>
>  >>  Saludos,
>  >>
>  >>  Miguel
>  >>
>  >
>  > Tienes razón, pero no los he dado porque no estoy limitado en ese
>  > sentido, si me dais una solución, aunque requiera añadir campos nuevos
>  > a la base de datos se añaden.
>  > Así que puedes dar por supuestas las necesidades y centrarte en la solucion.
>  >
>  > Hablando con friki se me ha ocurrido que al vez podría hacerse usando
>  > la cookie, si durante la fase de login meto la fecha antigua en la
>  > cookie antes de actualizarla (fecha de ultimo acceso) y hago las
>  > comparaciones contra la cookie no tendré el primer problema que os
>  > planteaba. Pero aun así, si el usuario lo lee y vuelve al panel
>  > principal (donde se muestran todos los hilos) lo seguirá viendo como
>  > no leido. Aunque este problema ya es menor, al menos ya puedo
>  > diferenciar contenido nuevo de contenido viejo, lo cual es un avance.
>  >
>  > Saludos.
>  >
>  >
>
> Pues vuelves hacer lo mismo. No es que lo hayas dejado abierto, es que a
>  mi humilde entender, sigues sin describir de una manera ordenada como
>  esta estructurado el foro y que mensajes quieres que se resalten.
>
>  No se que foro has visto tu en el que se resalten los ultimos mensajes,
>  yo no he visto ninguno. Yo he estado en foros en que te envian correos
>  si alguien responde a un hilo en el que estabas escribiendo (y te has
>  suscrito a alertas).
>
>  Creo que estas confudiendo las funcionalidades. Lo de las cookies es una
>  buena opcion, pero si el usuario las desactiva pierdes toda la
>  funcionalidad.


La estructura es muy simple, hay una bandeja de entrada, en la que
quiero resaltar en negrita los mensajes nuevos desde el último acceso,
lo ideal sería que además a medida que los leo dejen de estar
resaltados.

Los foros phpBB tienen esa opción, lo que no en todas las plantillas
es visible, es una búsqueda como esta:
http://dominio.com/foro/search.php?search_id=newposts&sid=identificador_de_usuario

A nivel interno la base de datos contiene 3 tablas:

*La de los usuarios, nombre, contraseña, email, fecha de último acceso...

*La de los hilos (topics) con un identificador, fecha de creación,
fecha de última molificación, autor, destinatario, y algunos campos
para funcionalidades extra.

*Una última tabla que contiene los mensajes de cada hilo, esta tabla
tiene los campos, id del hilo al que pertenece, fecha, asunto, cuerpo
del mensaje y creo que nada más.



-- 
Hugo Chinchilla Carbonell

Good programmers often confuse halloween (31 OCT) with christmas (25 DEC)


Más información sobre la lista de distribución Bulmailing