Hasta donde puedo entender, tienes un sistema de mensajería. Cada mensaje tiene un emisor y un receptor. Tanto emisor como receptor pueden asigarle al mensaje
un "estado" o "carpeta" (enviado, borrado, etc..). Al entrar en el buzón, el usuario ve sus mensajes ordenados por estado.
Más o menos siguiendo con tu enfoque, lo puedes solucionar con una tabla:
Fíjate que este enfoque no es del todo correcto ya que emisor y receptor son conceptos que cambian según el usuario.
Son términos confusos ya que si quiero ver mi buzón de correo tienes que consultar mensajes en los que yo soy a veces receptor y a veces emisor.
Lo mismo ocurre con la palabra 'estado', dices estado cuando quieres decir 'carpeta'.
Pero continuamos con este modelo.
Los estados posibles para un mensaje serían: Inbox, Deleted, Enviados: 0, 1, y 2, por ejemplo
Para enviar mensajes: insertas UN registro donde:
EMISOR, el id del usuario en esta session
RECEPTOR
ESTADO_EMISOR 2, cada vez que el usuario envia, se guarda en enviados
ESTADO_RECEPTOR 0, para el receptor, inicialmente el mensaje va a la bandeja de entrada
Para mostrar el buzón del usuario actual, o sea, los mensajes que me han enviado a MI:
Código PHP:
Ver originalselect * from mensajes where emisor = $myUserId;
Para mostrar una carpeta de mi buzón:
Código PHP:
Ver originalselect * from mensajes where emisor = $myUserId and estado = $estado;
Para cambiar un mensaje de estado, simplemente haces update de un mensaje concreto:
Código PHP:
Ver originalupdate mensajes set estado = $estado where id = $id;
Tu problema es que un mismo mensaje guarda estados correspondientes a usuarios diferentes, de allí la confusión al aplicar los filtros.
Una posible solución es que cada vez que se envíe un mensaje, insertes DOS registros, uno para el emisor y otro para el receptor. Así, cada
usuario puede hacer lo que quiera con el registro y no te complicas la vida.
Espero que te sirva, saludos