Notice: Undefined index: fb_usuario in /var/www/html/inc/cabeza.php on line 37
Que curiosa publicacion encontre en http://www.bitwo.net — Wakaala!
  • Que curiosa publicacion encontre en http://www.bitwo.net

  • Honduras
    Novato
  • Sistema de notificaciones con php y mysql


    Desde Wakaala.net nos enseñan como crear un sistema de notificaciones utilizando php y mysql.

    En este tutorial vamos a aprender a crear un sistema de notificaciones similar al de la imagen, para esto necesitaremos un servidor que utilize php y mysql y obviamente, una base de datos ya formada.

     

    Primer Paso:

    Ejecutamos la siguiente consulta vía phpmyadmin

    [cce]
    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 ;[/cce]

    Con esto crearemos la tabla denominada wk_notificaciones que contiene los siguientes campos:

    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.

     

    Segundo paso:

    Nuestro siguiente objetivo será el armado del sistema de envio de notificaciones, para ello utilizaremos la siguiente función.

    [cce]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())”);
    }[/cce]

    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: [cce]enviar_notificacion($autor_comentario_id,$autor_respuesta_id,$comentario_id,NOTIFICACION_RESPUESTA_COMENTARIO)
    ;[/cce]

    Antes de poder proceder, talvez se puedan estar preguntando. ¿Qué 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 podría tener mas que solo respuestas de comentarios, no?

    [cce]define(‘NOTIFICACION_RESPUESTA_COMENTARIO’, 1);[/cce]

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

    Pero, ¿Por qué 1?. Podrían usar 500 o 1785, 11111 etc, siempre y cuando el valor sea único ante las demás constantes ya que podría causar un problema a la hora de cargar datos de la base de datos.

    Ejemplo:
    [cce]define(‘NOTIFICACION_RESPUESTA_COMENTARIO’, 1);
    define(‘NOTIFICACION_MEGUSTA_COMENTARIO’, 1);[/cce]

    Este ejemplo muestra un mal uso de las constantes, como pueden ver, ambas tienen el mismo valor y entonces, ¿Cómo sabremos qué es?

    La manera correcta seria la siguiente:
    [cce]define(‘NOTIFICACION_RESPUESTA_COMENTARIO’, 1);
    define(‘NOTIFICACION_MEGUSTA_COMENTARIO’, 2);
    define(‘NOTIFICACION_ME_GUSTA_POST’, 3);
    etc..[/cce]

    Muy bien, hasta el momento ya tenemos nuestra tabla bien explicada y la funcion para enviar las notificaciones.

     

    Tercer Paso:

    Ahora vamos a cargar las notificaciones de cada usuario de nuestra web.

    Este código que comparto a continuación, tiene que ser implementado donde deseásemos 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.
    [cce]$consulta_notificaciones = mysql_query(“SELECT * FROM tabla_notificaciones WHERE destino_id=$usuario_id ORDER BY id DESC LIMIT 25″);[/cce]

    y por último, armamos las notificaciones.
    [cce]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;

    }

    }[/cce]

    Este sistema solo mostrará el ID del usuario que hizo la acción y el ID del Objetivo, ustedes tendrán que extraer los datos del usuario mediante una consulta a la tabla de usuario de su web, asi mismo lo hacen con el objetivo.
    Te gustó la publicación?, Por qué no compartes las tuyas con la comunidad. Registrate ahora!

    Debes iniciar sesión para poder comentar.

    1 Comentarios

    • Elfenix · Hace 5 años y 6 meses

      jejeje
      0 0
  • © 2019 Wákaala!
  • Términos
  • Privacidad
  • Ayuda