Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Guardar conversaciones chat en php

Estas en el tema de Guardar conversaciones chat en php en el foro de PHP en Foros del Web. Hola buenas tengo una aplicación web en php, De chat de mensajes. Donde el emisor escribe el mensaje al receptor y se muestra una pantalla ...
  #1 (permalink)  
Antiguo 14/10/2015, 05:17
 
Fecha de Ingreso: octubre-2015
Mensajes: 2
Antigüedad: 9 años, 1 mes
Puntos: 0
Pregunta Guardar conversaciones chat en php

Hola buenas tengo una aplicación web en php, De chat de mensajes. Donde el emisor escribe el mensaje al receptor y se muestra una pantalla a modo de chat con sus conversaciones respectivas.

Y necesito que al eliminar la conversación el otro usuario tenga una copia, es decir si el usuario1 borra la conversación se le oculta. Y el usuario2 se le sigue mostrando.

Estructura tabla:

CREATE TABLE IF NOT EXISTS `tblmensajes` (
`id` int(11) NOT NULL, // ID DE LA CONVERSACIÓN
`para` varchar(180) NOT NULL, // RECEPTOR DEL MENSAJE
`de` varchar(180) NOT NULL,// EMISOR DEL MENSAJE
`leido` int(1) NOT NULL, // CONTROL PARA SABER SI SE HA LEIDO
`fecha` date NOT NULL,//FECHA
`texto` text NOT NULL,// CONVERSACION
`eliminadode` tinyint(1) NOT NULL DEFAULT '1',// CONTROL PARA OCULTAR CONVERSACION
`eliminadopara` tinyint(1) NOT NULL DEFAULT '1'//CONTROL PARA OCULTAR CONVERSACION
) ENGINE=InnoDB AUTO_INCREMENT=214 DEFAULT CHARSET=latin1;


Con esto recorro la tabla



foreach ($us3 as $key => $value) {
if($value->getDe()==$de){
echo" <article class='de' style='float:right;background-color:rgb(255,128,0);"
. " width=200px!important;'><h4>Yo</h4>"
. "<span>".$value->getTexto()."</article>";
}


if($value->getPara()==$de){
echo" <article class='para' style='float:left;background-color:rgb(0,128,255);'><h4>".$nombrePara."</h4>"
. "<span>".$value->getTexto()."</span></article>";


}




}

Y se muestra la conversacion de ambos.


Y aquí la consulta sql :




$sql = "select * from " . $this->nombreTabla . " where para='" . $para . "' and de='".$de."' or para='".$de."' and de='".$para."' and leido=0 $orderby";



Pensé lo de los controles eliminarde y eliminarpara para ocultarlos. Pero no sé como implementarlos. Necesito ayuda anda perdido.



Un saludo
  #2 (permalink)  
Antiguo 14/10/2015, 08:12
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Guardar conversaciones chat en php

Yo lo haría así: tendría 3 tablas, una para conversaciones en donde aparecerían los participantes de la conversación y la fecha en que se creó por ejemplo:

Id -- fecha -- remitente -- destinatario

Otra tabla en la que se guarden cada uno de los mensajes de cada conversación con el id de la conversación como campo relacionado:

ID -- id_convers -- mensaje -- remitente -- recibido -- leido

Y por último otra tabla en la que se guarde cuáles conversaciones tiene activas cada usuario:

ID -- Usuario -- id conversación

Entonces cada vez que Juanito inicie una conversación con X persona se va a agregar un registro a esta tabla tanto para Juanito como para la persona X porque ambos van a tener activa la conversación. Si Juanito decide que ya no quiere ver más esa conversación la elimina de su lista y lo que vas a hacer es eliminar el registro correspondiente a esta última tabla así ya no va a aparecer en la lista de conversaciones de Juanito pero si en las de la otra persona. Para ahorrar espacio en la BD puedes eliminar la conversación junto con los mensajes de las otras dos tablas en el momento que los dos participantes hayan decidido eliminar la conversación de su lista.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #3 (permalink)  
Antiguo 15/10/2015, 00:42
 
Fecha de Ingreso: octubre-2015
Mensajes: 2
Antigüedad: 9 años, 1 mes
Puntos: 0
Información Respuesta: Guardar conversaciones chat en php

Muchas gracias chronos682 solucionado :)

Etiquetas: chat, conservar, copia, fecha, mensaje, select, sql, tabla
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 20:13.