[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