Foros del Web » Programando para Internet » PHP »

Nuevo mensaje en foro

Estas en el tema de Nuevo mensaje en foro en el foro de PHP en Foros del Web. Compañeros estoy haciendo un foro y no se como hacer que un usuario vea que temas no a leido, por ejemplo, en forosdelweb se pone ...
  #1 (permalink)  
Antiguo 16/11/2009, 08:42
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Nuevo mensaje en foro

Compañeros estoy haciendo un foro y no se como hacer que un usuario vea que temas no a leido, por ejemplo, en forosdelweb se pone en negrilla el titulo y ahí se da cuenta uno que hay un mensaje nuevo que yo no he visto, en otros foros aparece (new) cosas así, como se realiza esto?
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #2 (permalink)  
Antiguo 16/11/2009, 09:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Nuevo mensaje en foro

Podrias crear otra tabla que contenga el id del usuario y otra columna que tenga el id de los mensajes. Cuando vayas a presentar los temas, haces una consulta de cada uno de los mensajes buscando si el id del usuario y el id del mensaje esta en esa lista, si esta en esa lista entonces es un mensaje leido, si no esta en la lista entonces no lo ha leido. Cuando vaya a leer el mensaje haces un insert en esa tabla con el id del usuario y el id del mensaje. Bueno esa es la idea mas o menos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 16/11/2009, 09:11
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Nuevo mensaje en foro

Hola, que talll! Mira te tiro la 1ra que se me ocurre (atenete a las consecuencias XD)

Lo primero que haria para ir probando, seira almacenar en 2 columnas distintas de una bd de datos, los siguientes valores:

columna 1: fecha, hora y usuario de creacion del post
columna 2: fecha, hora y usuario de ultima visita

Despues, cada vez que un usuario entre a la pagina donde estan las listas de posts, capturas en un array la hora y fecha del servidor.
Al mandar dinamicamente todas las listas de temas, comparas la hora y fecha capturadas, con la hora y fecha de las columnas hechas antes, preguntando si es mayor menor, igual, etc etc, la fecha, etc etc y segun eso mandas <b></b> entre los titulos o no...
Vos diras: pero si entra alguien que no esta registrado??
RTA: Si te fijas, en forosdelweb por ejemplo si no estas registrado, no aparecen los ultimos temas en negrita...

Fijate, por ahi sirve lo que te digo, en pcipio, es lo que yo haria xd, por ahi hay metodos mas faciles y mas dificiles, este es uno que se me ocurrio.

Espero que sirva!!

Última edición por jackson666; 16/11/2009 a las 10:08
  #4 (permalink)  
Antiguo 16/11/2009, 10:44
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Ummm, tengo mis dudas con la propuesta de jackson666, pero a su ves me dió mucho que pensar a la respuesta de abimaelrc, por que debería crear una tabla, eso ya es seguro, pero grabaría el usuario y el tema ahí, y otro campo, el de los post que hayan, si ese usuario se logue y va al foro X, y están los temas 1, 2 y 3, y la tabla está así:

usuario | tema | mensajes
1111 | 1 | 3
1111 | 2 | 1
1111 | 3 | 0

pero en realidad el tema 2 ya tiene 2 mensajes, entonces debería ponerlo en las etiquetas <b></b>
pues me parece mas viable que ponerme a ver la hora del servidor, la verdad no entiendo para que puede servirme XD.

me asesoran por favor si ven que está mal :S

gracias.

Efectivamente así lo hice,

cuando alguien responde un post, o lo crea o lo vé, llama esta función:

Código php:
Ver original
  1. function insertVisitadoForo($id_usuario,$id_tema,$mensaje){
  2.     include("configuracion.php");
  3.     $sql="insert into visitado values($id_usuario,$id_tema,$mensaje)";
  4.     mysql_query($sql);
  5. }

cuando entra a las secciones, se ejecuta este:

Código php:
Ver original
  1. function consultaVisitadoForo($id_usuario,$id_tema){
  2.     include("configuracion.php");
  3.     $sql_visitado="select max(v.mensajes) as m from visitado as v where v.id_usuario=$id_usuario and v.id_tema=$id_tema";
  4.     $rs_visitado=mysql_query($sql_visitado);
  5.     $row_visitado=mysql_fetch_array($rs_visitado);
  6.     $num_v=$row_visitado[0];
  7.     //consulta ultimo que hay
  8.     $sql_mensaje="select max(p.numero) from post as p where p.id_tema=$id_tema";
  9.     $rs_mensaje=mysql_query($sql_mensaje);
  10.     $row_mensaje=mysql_fetch_array($rs_mensaje);
  11.     $num_m=$row_mensaje[0];
  12.     if($num_m>$num_v){
  13.         return true;
  14.     }
  15.     else{
  16.         return false;
  17.     }
  18. }

Espero que haya quedado claro para los que lo necesitan.
Saludos.
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175

Última edición por GatorV; 17/11/2009 a las 18:31
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:18.