Ayuda con un foro


  • 0

    Estos dias atras me he currao un foro en php con bases de datos en mysql, esta totalmente operativo y toy mu contento con los resultados teniendo en cuenta ke es la primera vez ke me meto con php.

    El motivo de mi post es para ver si me podriais proporcionar teorias para un sistema ke te diga ke posts nuevos no has leido aun, tal y como hace este vb board (el icono ese amarillo a la izkierda de cada rama).

    A ver ke me proponeis :p Saludos y gracias



  • 1

    Todo muy teorico.

    Opcion 1: con cookies, guardas en la galleta el ultimo post que habia cuando el usuario salio la ultima vez.

    Opcion 2: guardas la misma informacion en la base de datos para cada usuario.

    En cualquier caso cada vez que el usuario entre en los foros claculas que post nuevos hay, tienen mayor indice que el que tiene guardado. Con esto tienes todos los nuevos, despues solo tienes que asociarlos a cada rama, es decir, post nuevos que pertenezcan a esta rama.



  • 2

    Algo asi pense, es una buena idea y en principio facil de hacer, pero ahora necesito saber el momento en el ke debo guardar la informacion en la BD, justo cuando salga? como detecto ese momento?



  • 3

    Eso mismo es lo que habia pensado yo y no lo tengo muy claro.

    Se supone que hay un evento que se genera al cerrar la ventana, onclose o algo asi, pero no se si te servira para eso.

    Otra opcion seria guardar cada cierto tiempo durante la sesion, pero no es una manera muy eficiente.

    No se, tiene que haber una solucion mas elegante, pero no se me ocurre.



  • 4

    La solucion ke seria ideal es hacer una tabla ke almacenara si el usuario X ha leido el post Y, pero claro, esa tabla se haria enorme cuando hubiera 1000 usuarios y 10000 posts (por decir algo). No es la mejor manera desde luego, a mi tp se me ocurre como hacer esto, pero bueno a ver si alguien lo ha hecho ya.

    Mil gracias pakohuelva



  • 5

    Buenas, a ver si te sirve.

    Al mismo tiempo k el usuario abre el post guardas a la db/cookie k ya la ha visto.

    Salu2!



  • 6

    Si, pero como ya dije antes eso a la larga supondria ke la BD se hiciera ENORME, y eso de guardar una cookie por post… no se debe haber un metodo mas sencillo ke aun no se nos ha ocurrido... seguire pensando

    Por cierto, si os interesa ver como me ha kedado el foro y el resto de la web: www.full-wow.com



  • 7

    marcalj tiene razon, lo que tienes que haces que cada vez que abra un post guarde el numero de este en la cookie de forma que todos los anteriores queden marcados como leidos para la proxima sesion, el problema sera que los post mas recientes a este que el usuario no haya visto apareceran como no leidos en la proxima, pero esto puede ser hasta bueno.



  • 8

    Una pregunta….en el supuesto caso k lo kisieras guardar en la db, toda esta info.... De que manera lo harias? es que cada forma k lo veo no es k digamos...optimo, ni facil de planificar...

    Como lo harias?

    I en la cookie, como funciona? de la misma forma k lo guardas, cuando mas tarde el usuario vuelva a entrar se tendra k leer la cookie para k marke los posts leidos como tal, no?

    Salu2!



  • 9

    Para guardarlo en la bd tendrias que añadir un nuevo campo a lal tabla donde se guardan los usuarios en el que indicarias el ultimo post leido.

    La cookie la guardas en el PC del cliente con la informacion que quieras (codificada) y en cuanto carga la pagina lees la informacion contenida en la cookie.

    Lo de la bd no es buena idea porque aumentaria la cantidad de datos y el flujo de informacion por la misma, imagina cuando haya 100 usuarios conectados al mismo tiempo y con cada peticion se actualice esa informacion. Como la cookie la tienes que leer de todas formas para identificar al usuario cuando entra no te supone ningun esfuerzo leer ademas esa info.



  • 10

    Esa idea es buena, guardar en la cookie la ID del ultimo post leido, de tal forma ke todos los ke tengan una ID mayor aparezcan como no leidos.

    Mejor trabajar con esa sencilla cookie en vez de con bases de datos. Aunke supone poca carga mejor hacerlo asi.

    Voy a probar, luego os comento. Mil gracias a ambos :sisi:

    PD: ke os parece la web? :p

    ACTUALIZADO: Vale, ya funciona el sistema, en vez de con IDs lo he hecho con fechas, claro ke tiene el problema ke decias packosoft, marca como leidos los posts mas recientes al ke hemos leido la ultima vez, pero bueno, tiene su logica. Ya lo arreglare mas adelante, de momento con esto sobra :p



  • 11

    Ok….bueno, mas o menos lo he entendido....

    La web esta bien i el foro tambien, pero en Linux (mozilla) no se me ve nada bien...el texto se me sobrepone en multiples sitios.

    Salu2!



  • 12

    Bueno, yo soy mas retorcido q estos 2 y te voy a proponer el sistema ideal. Primero una tabla con 3 campos y 2 claves. Un campo fecha, un ide_usuario (clave) y un id_rama (clave). Bien, cada vez q un usuario entre en una rama tu apuntaras q ese usuario a esa hora entro en esa rama. Luego para saber cuales son recientes solo tienes q hacer una consulta a la BD pidiendo de esa rama si hay algun post posterior a la fecha en la q entro. Me parece q es bastante sencillo. Para q la tabla no se haga inmensa, cuando entre en esa rama modificas la tabla para q tenga la nueva fecha. Me parece q no es tan complicao.

    Por lo demas, mu wapo el foro y mu buen qrro.

    SalU2

    KrHonHoS



  • 13

    Lo que nos daria, si lo he entendido bien, teniendo 1000 usuarios y 1000 ramas una cantidad de informacion y de accesos que haria que para usuario que entrase una rama hubiera que acceder a 3 campos de una tabla al margen de la informacion de dicha rama. Es decir, si entran esos 1000 usuarios, 3000 accesos por rama.

    Mucho ancho de banda y acceso a la bd, perdida de velocidad y eficacia.



  • 14

    No es por nada, pero 1000 usuarios a la vez no creo q accedan nunca, sobre todo 1000 usuarios registrados, puesto que los anonimos no tienen esta opcion. No es por menospreciar la pagina, pero esas visitas no las tiene ni terra. Este foro esta echo asi y el phpbb tmb. Y puede pensar q es mucha info la q mueve, pero ya te digo yo q va a sufrir mas al listar 25 mensages por pagina o todos los mensages en la principal al no haber seleccion de los ultimos x dias q haciendo eso.

    Ademas, la perdida de ancho de banda la generan los usuarios, no las consultas. Y estando en un servidor, esas consultas las haces hasta con un duron a 1ghz.



  • 15

    Heh esas consultas las haces hasta con un p166 xD

    Vale, mas tarde probare lo ke me has dicho KrHonHoS, mil gracias a ti tb :)



  • 16

    Pues si es asi como funciona estupendo, ya me has sacado de duda.

    De todas formas el phpbb no tiene lo de ir al priemero no leido de cara rama, ¿o si?.



  • 17

    Me suena q tiene la funcion, pero no esta implementado. Digo me suena pq le e echao un ojo por encima. Ahora mismo lo estoy revisando a fondo pq me da un error mu cabron en la page y no se pq. Ya te comentare.





Has perdido la conexión. Reconectando a Hardlimit.