Foros del Web » Programando para Internet » PHP »

Mensajeria en PHP

Estas en el tema de Mensajeria en PHP en el foro de PHP en Foros del Web. Hola, que tal? Estoy haciendo un sistema de mensajes en mi pagina web para que los usuarios puedan comunicarse entre ellos. Esta es la estructura ...
  #1 (permalink)  
Antiguo 11/09/2011, 23:54
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 7 años, 11 meses
Puntos: 8
Mensajeria en PHP

Hola, que tal?

Estoy haciendo un sistema de mensajes en mi pagina web para que los usuarios puedan comunicarse entre ellos.

Esta es la estructura de las tablas que he decidido hacerle para que funcione bien:

Mensajes:
mensaje_id
fecha_envio
titulo
contenido
estado ('leido', 'sin_leer') DEFAULT 'sin_leer'

Mensajes_Relaciones:
mensajes_relaciones_id
mensaje_id
de_usuario_id
para_usuario_id

El problema esta a la hora de insertar un registro a las tablas, ya que la tabla Mensajes_Relaciones requiere de mensajes.mensaje_id para poder llenar su campo mensajes_relaciones.mensaje_id.

Alguna idea de como puedo hacer esto?

Muchas gracias por su cooperacion!
  #2 (permalink)  
Antiguo 12/09/2011, 01:26
Avatar de fjflores  
Fecha de Ingreso: agosto-2011
Ubicación: Cádiz
Mensajes: 27
Antigüedad: 7 años, 10 meses
Puntos: 8
Respuesta: Mensajeria en PHP

Yo haría la estructura de las tablas de manera diferente, en vez de esto:
Código:
Mensajes:
mensaje_id
fecha_envio
titulo
contenido
estado ('leido', 'sin_leer') DEFAULT 'sin_leer'

Mensajes_Relaciones:
mensajes_relaciones_id
mensaje_id
de_usuario_id
para_usuario_id
Haría:
Código:
Mensajes:
mensaje_id
fecha_envio
titulo
contenido
usuario_id

Mensajes_Relaciones:
mensajes_relaciones_id
mensaje_id
para_usuario_id
estado ('leido', 'sin_leer') DEFAULT 'sin_leer'
El usuario que hace el mensaje lo lleva la tabla de mensajes y el campo estado va en la tabla de relacciones pues el estado va relaccionado a cada usuario al que va dirigido.
Primero creas el mensaje en la tabla de mensajes y despues cojes la lista de usuarios a los que va dirigido el mensaje y por cada usuario creas un registro en la tabla de Mensajes_Relaciones.
De esta forma tienes el control de qué usuario ha visto cada mensaje por ejemplo.
Espero haberme explicado.
  #3 (permalink)  
Antiguo 12/09/2011, 14:20
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 7 años, 11 meses
Puntos: 8
Respuesta: Mensajeria en PHP

Perfecto! gracias por la correccion!

Pero, como identifico que mensajes son del mismo tema?

Gracias!

Última edición por morfasto; 12/09/2011 a las 22:20
  #4 (permalink)  
Antiguo 12/09/2011, 22:26
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 7 años, 11 meses
Puntos: 8
Respuesta: Mensajeria en PHP

Alguna idea?
  #5 (permalink)  
Antiguo 13/09/2011, 08:40
Avatar de fjflores  
Fecha de Ingreso: agosto-2011
Ubicación: Cádiz
Mensajes: 27
Antigüedad: 7 años, 10 meses
Puntos: 8
Respuesta: Mensajeria en PHP

Pensaba que era un sistema de mensajería donde los msg se los envían los usuarios entre ellos y no un foro.
Para un foro hice uno de prácticas cuando empezaba y a ver si te vale esta estructura:
Código:
-- 
-- Estructura de tabla para la tabla `forohilo`
-- 

CREATE TABLE `forohilo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `forotema_id` int(11) DEFAULT NULL,
  `usuarios_id` int(11) DEFAULT NULL,
  `fecha_at` datetime DEFAULT NULL,
  `texto` text,
  `usuario` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ;

-- --------------------------------------------------------

-- 
-- Estructura de tabla para la tabla `foroseccion`
-- 

CREATE TABLE `foroseccion` (
  `id` int(11) NOT NULL,
  `nombre` varchar(300) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`id`)
);

-- --------------------------------------------------------

-- 
-- Estructura de tabla para la tabla `forotema`
-- 

CREATE TABLE `forotema` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `usuarios_id` int(11) DEFAULT NULL,
  `foroseccion_id` int(11) DEFAULT NULL,
  `asunto` varchar(150) DEFAULT NULL,
  `texto` text,
  `fecha_at` datetime DEFAULT NULL,
  `usuario` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
Son 3 tablas:
  • foro_seccion: para dividir el foro en diferentes secciones
  • foro_hilo: son los hijos de un tema
  • foro_tema: cada tema que se habre nuevo
  #6 (permalink)  
Antiguo 13/09/2011, 09:43
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 7 años, 11 meses
Puntos: 8
Respuesta: Mensajeria en PHP

Tuve que cambiar de nuevo mis tablas, y estas son las definitivas:

grupo_mensaje:
grupo_id (auto increment)
titulo
fecha_ultimo_mensaje
creador_usuario_id

mensaje:
mensaje_id auto increment
grupo_id
fecha_envio
contenido
de_usuario_id

grupos_para_usuario:
mensajes_relaciones_id auto increment
para_usuario_id
grupo_id
fecha_leido (null si nunca lo ha leido, default null)

Estoy creando la lista de mensajes para el usuario que esta logueado y esto es lo que me dijeron que haga:

Haces query por todos los grupos asociados al usuario que observa la pagina, con join a "grupos_para_usuario" para comparar grupo_mensaje.fecha_ultimo_mensaje con grupos_para_usuario.fecha_leido para ver si el grupo esta leido o no.

Pero no entiendo bien como hacer la consulta, alguien me ayuda?

Gracias!

Etiquetas: mensajeria, registro, tabla, 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 12:13.