Notice: Undefined index: fb_usuario in /var/www/html/inc/cabeza.php on line 37
Como crear un sistema de notificaciones en php y MySQL como el de Wakaala — Wakaala!
  • Como crear un sistema de notificaciones en php y MySQL como el de Wakaala

  • Corea del Sur
    GodLike
  • Imagen


    Ya hace un par de dias queria comenzar a publicar tutoriales de programación y para comenzar la biblioteca voy a comenzar con este pequeño en el cuál voy a enseñar como crear un sistema de notificaciones para nuestra web.

    Este tutorial esta basado en el sistema que se implemento a Wakaala.com.

    Nota: Para poder comenzar con este tutorial nesecitamos tener una base de datos, saber SQl y PHP.

    Tabla Notificaciones
    Para poder manejar las notificaciones nesecitamos una tabla con 7 campos (en esta caso).

    SQL
    CREATE TABLE `wk_notificaciones` (
    `id` int(11) NOT NULL auto_increment,
    `destino_id` int(11) NOT NULL,
    `autor_id` int(11) NOT NULL,
    `objetivo_id` int(11) NOT NULL,
    `tipo` int(11) NOT NULL,
    `vista` tinyint(1) NOT NULL,
    `fecha` datetime NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

    Voy a explicar para que sirve cada campo de esta tabla.
    id - Guardamos una id o identificacion unica de la notificacion, esto seria como nuestro numero de indentidad.

    destino_id - En este campo guardamos como el nombre lo dice; la Id del destino, es decir si nuestra web contiene una area de comentarios y cada comentario tiene la opción de ser respondido, entonces cuando un comentario sea respondido el destino va ser el ID del autor del comentario.

    objetivo_id - Si destino_id es el ID del autor del comentario entonces objetivo_id seria el ID del comentario.

    tipo - Es es sin duda el campo mas importante de todos, es aqui donde guardamos el tipo de notificacion. Recordemos que una pagina dinamica no solo va tener area de comentarios, en el caso de wakaala se puede comentar y valorar hasta los momentos. Por eso nesecitamos especificar el tipo de notificacion para poder armar luego la notificación

    vista - Este campo solo seria un Plus, no es tan necesario ni obligatorio, pero recuerden que tenemos que mostrar si hay nuevas notificaciones, por eso usamos vista para establecer que una notificacion es nueva o ya fue vista.

    fecha - el campo fecha lo utilizamos para guardar la hora y fecha de cuando se ejecuto al acción.

    una vez habiendo explicado los campos de nuestra tabla notificaciones, procedemos con el sistema de envio de notificaciones, Vamos a hacerlo lo mas simple posible con una función

    function enviar_notificacion($destino_id=0,$autor_id=0,$objetivo_id=0,$tipo=0) {    
    $consulta = mysql_query("INSERT INTO tabla_notificaciones (destino_id,autor_id,objetivo_id,tipo,vista,fecha) VALUES($destino_id,$autor_id,$objetivo_id,$tipo,0,NOW())");
    }


    Esta función será la que vamos a utilizar para enviar las notificaciones a su objetivo.

    Supongamos que alguien responde un comentario en nuestra pagina, cuáles serian los datos que obtenemos en esa acción (ID del comentario, ID del Autor del Comentario y el ID del Autor de la Respuesta)

    Cuando obtengamos esos datos ejecutamos:
    enviar_notificacion($autor_comentario_id,$autor_respuesta_id,$comentario_id,NOTIFICACION_RESPUESTA_COMENTARIO)

    ;

    Antes de poder proceder, talvez se puedan estar preguntando Que rayos es NOTIFICACION_RESPUESTA_COMENTARIO?

    La mejor manera y las mas ordenada para usar tipos seria definiendo constantes.
    En esta caso solo estamos usando NOTIFICACION_RESPUESTA_COMENTARIO, aunque nuestra web podria tener mas que solo respuestas de comentarios, no?

    define('NOTIFICACION_RESPUESTA_COMENTARIO', 1);


    Definimos las constantes para guardar y saber que tipo de notificación es.

    Pero, por qué 1?, eso no importa podrian usar 500 o 1785, 11111 etc... como lo deseen, siempre y cuando sea unico ante las demas constantes porque podria causar un problema a la hora de cargar datos de la Base de Datos.

    Ejemplo:
    define('NOTIFICACION_RESPUESTA_COMENTARIO', 1);
    define('NOTIFICACION_MEGUSTA_COMENTARIO', 1);

    Este seria un mal uso de las constantes, veran, ambas tienen el mismo valor y entonces, Como sabremos que es? o.O

    La manera correcta seria la siguiente:
    define('NOTIFICACION_RESPUESTA_COMENTARIO', 1);
    define('NOTIFICACION_MEGUSTA_COMENTARIO', 2);
    define('NOTIFICACION_ME_GUSTA_POST', 3);
    etc..

    Muy bien, hasta el momento ya tenemos nuestra tabla bien explicada y la funcion para enviar las notificaciones, ahora vamos a cargar las notificaciones de cada usuario de nuestra web.

    Este codigo acontinuación tiene que ser implementado donde queramos que nuestras notificaciones se muestren

    Hacemos una consulta a la tabla notificaciones
    Tomen en cuenta que la variable $usuario_id contiene el id del usuario logeado.
    $consulta_notificaciones = mysql_query("SELECT * FROM tabla_notificaciones WHERE destino_id=$usuario_id ORDER BY id DESC LIMIT 25");

    y comienza la parte buena, Armamos las notificaciones.
    while ($notificacion = mysql_fetch_object($consulta_notificaciones)) {
    $usuario_accion = $notificacion->autor_id; //Este es el ID del usuario que repondio
    $tipo_notif = $notificacion->tipo; //Tipo de notificacion
    $objetivo_accion = $notificacion->objetivo_id; // ID del Comentario

    switch ($tipo_notif) {

    //Es una respuesta?
    case NOTIFICACION_RESPUESTA_COMENTARIO:
    echo $usuario_accion. ' respondió tu comentario '.$objetivo_accion;
    break;

    //Le gusto mi comentario
    case NOTIFICACION_MEGUSTA_COMENTARIO:
    echo 'A '.$usuario_accion. ' le gustó tu comentario '.$objetivo_accion;
    break;

    }

    }

    Este sistema solo mostrara el ID del usuario que hizo la accion y el ID del Objetivo, ustedes tendran que extraer los datos del usuario mediante una consulta a la tabla de usuario de su web, asi mismo lo hacen con el objetivo.

    Esta es solo la idea de como funciona el sistema de notificaciones de Wakaala.com.

    Cualquier duda, Haganlas en los comentarios..
    Te gustó la publicación?, Por qué no compartes las tuyas con la comunidad. Registrate ahora!

    Debes iniciar sesión para poder comentar.

    19 Comentarios

    • daiser · Hace 2 años y 2 meses

      Esta perfecto este POST, la idea esta muy buena... era justo lo que necesitaba, los detalles sale de parte de uno mismo...
      2 1
      • DevilWorks Es correcto daiser. Me alegra saber que te gustó la publicación. Saludos!

        Hace 2 años y 1 mes
    • pedrinchis · Hace 3 años y 11 meses

      Viejo solo me registré para decirle que es un egoista. Obviamente se sabe que con esto no basta para crear un sistema de notificaciones solo estas realizando una consulta a base de datos y pare de contar. Donde esta el javascript??? o Jquery que interprete estas acciones y lo haga mas dinamico?

      Para el que necesite me avisa, no dejaré links publicos.
      1 1
      • DevilWorks Hola @pedrinchis gracias por tomarte tu tiempo para comentar la publicacion. Para ser preciso, el titulo del post dice claramente PHP + MySql, ademas, no entiendo a que te referis con jQuery para que interprete, puesto a que en el post esta la forma correcta de hacerlo con php. tomate tu tiempo para saber cuan util es este post. BIENVENIDO A WAKAALA, saludos y buen dia

        Hace 3 años y 11 meses
    • cesarin · Hace 4 años y 4 meses

      Hise todo pero no me funciona
      0 1
      • DevilWorks Estas haciendo uso correcto de la funcion que guarda la notificacion?
        enviar_notificacion(Usuario a notificar,Usuario que hace el evento, id del Objetivo, Tipo Notificacion)

        Hace 4 años y 4 meses
    • ZonaLeRoS · Hace 4 años y 10 meses

      NOs pasas el script completo, o simplemente nos detallas mas sobre el tema por favor !!
      0 1
      • DevilWorks Prometo crear un codigo fuente para descarga y mejor aun crear un video tutorial para que vean como funciona correctamente

        Hace 4 años y 4 meses
    • ZonaLeRoS · Hace 4 años y 11 meses

      esta todo bien pero como que no se entiende mucho, seria de mucha ayuda un script, asi es donde mejor entendemos nosotros, por favor sube el script O
      0 0
    • DevilWorks · Hace 5 años y 2 meses

      @darienfox el tutorial esta completo, el problema es que quiza no lo entendiste, quiza poniendolo en practica podrias ver la gran ayuda que brinde. sin embargo, estoy preparando un tutorial mejorado sobre este sistema y quiza agregue scripts para facilitar su uso, deberias seguir mis publicaciones para estar mas al tanto.. saludos!
      0 0
    • darienfox · Hace 5 años y 2 meses

      Podrías por favor subir un tutorial completo?...y de ser posible un pequeño ejemplo descargable...gracias!
      0 0
    • grax96 · Hace 6 años y 4 meses

      @DevilWorks avisame cuando lo tengas al tutorial
      0 0
    • DevilWorks · Hace 6 años y 6 meses

      @grax96 prometo que pronto hare el tutorial mejor explicado, por los momentos el tiempo me queda corto!
      0 0
    • grax96 · Hace 6 años y 6 meses

      Y esto?? ..quedo en la nada el segundo tutorial?
      0 0
    • DevilWorks · Hace 6 años y 11 meses

      Si, Como?
      0 0
    • PepeCoolFree · Hace 6 años y 11 meses

      mas espesificamente como?
      me puedes explicar un poco mas?
      0 0
    • myworld · Hace 6 años y 11 meses

      puedes pasar un archivo en php?
      0 0
    • DevilWorks · Hace 7 años y 3 meses

      Asi será ..
      0 0
    • PepeCoolFree · Hace 7 años y 3 meses

      cuando ya este listo me abisas por el perfil oks?
      0 0
  • © 2019 Wákaala!
  • Términos
  • Privacidad
  • Ayuda