Estoy construyendo un sitio de red social en PHP/MySQL/jQuery. Una vez que un usuario inicia sesión en mi sitio, me gustaría consultar el DB y obtener un anuncio de administrador, si existe. Este será un cuadro de mensaje que se muestra en la página para todos los usuarios, pero tendrá un X para hacer clic en él y no volver a mostrarlo hasta que el administrador publique un nuevo mensaje de anuncio. Entonces, si nunca haces clic en la X y hay mensajes de anuncio que existen en la base de datos, siempre aparecerá este cuadro de mensaje en tu página, sin embargo, si hiciste clic en la X para cerrarla, entonces regresas a la página. no estar allí, a menos que haya un nuevo mensaje de administrador publicado.¿La mejor manera de mostrar un mensaje de administrador a ciertos usuarios?
Sé que hay varias formas de hacerlo, pero estoy buscando la manera más eficiente.
Una idea que tengo, si agrego un campo mysql extra en la tabla del usuario "admin_message" y lo marco como 0, cuando publique un nuevo mensaje de administrador cambiará el registro para cada usuario a 1, si es administrador el mensaje se establece en 1 y luego se muestra en la página del usuario. Luego, cuando el usuario haga clic en la X para ocultar el cuadro, actualizará la fila de la tabla de usuario y reducirá el valor a 0.
Otra idea que tengo es usar cookies para verificar si un usuario ha elegido ocultar un mensaje , creo que esto sería más rápido, pero tal vez no tan bueno, ya que el usuario puede iniciar sesión con diferentes computadoras y si se muestra un mensaje nuevo, es posible que no lo vea de inmediato.
Entonces, ¿me pregunto si es una mala idea utilizar el campo de la base de datos adicional? Si tuviera 1,000,000 de usuarios, cuando publicara un nuevo mensaje de administrador, tendría que actualizar 1,000,000 de filas para asegurarme de que todos puedan ver el mensaje. ¿Hay una mejor manera? También una vez que un usuario inicia sesión en mi sitio, utilizaré una sesión para almacenar el valor de ellos al ver u ocultar el mensaje en lugar de mirar el DB en cada carga de página.
ACTUALIZACIÓN
En este momento creo que mi puesto podría de sido un poco confuso o no clara sobre qué es exactamente lo que quería decir, porque la mayoría de las respuestas son atendidos a un sistema de mensajes, que esto no es algo cercano a.
Olvídese de la palabra mensaje, por favor, trataré de explicarlo con una palabra diferente. Digamos que hay 1 administrador en el sitio, que es el único administrador que puede publicar un mensaje para que lo vean los usuarios. Los usuarios solo verán 1 mensaje, si hay 2352345234 mensajes publicados a lo largo de la vida útil del sitio, no importará, solo verán 1 mensaje, el más nuevo.
Ahora, algunos usuarios que inician sesión y ven este mensaje "div" en la página pueden cansarse de verlo, por lo que podrán ocultarlo para que nunca vuelva a aparecer.
Será tan simple como un sí o un no para mostrar este mensaje en la página.
Sin embargo, si decido que necesito publicar un nuevo mensaje de administrador para que todos los usuarios lo vean, incluso un usuario que eligió ocultar y no mostrar el mensaje de administrador lo volverá a ver hasta que decida no volver a verlo.
Bueno, sinceramente, no es tan complejo. Será 1 administrador en el sitio y solo mostrará 1 mensaje, el mensaje más nuevo que será para que todos los usuarios lo vean, solo necesito una forma para que los usuarios oculten el cuadro de mensaje si lo desean mostrar en la página y una forma de forzar el cuadro oculto para mostrar si publico un mensaje nuevo. Por lo tanto, no es necesario que almacene ningún ID de usuario de ningún tipo y no necesito consultar ID especiales – JasonDavis