Sistema de notificaciones con 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.
Sistema de notificaciones con php y mysql
20 Puntos Score: 5/10
Visitas: 7915 Favoritos: 25
Ver los usuarios que votaron...
10 Comentarios Sistema de notificaciones con php y mysql
creo q hay una etiqueta para insertar codigo en el post para q este mas ordenado y un videito no estaria mal  
mucho mejor seria hermano ya en archivo .php digo yo ajajaj se te agredece x el aporte
Cita cesarp155: Mostrar
exacto hay veces que el ejemplo no esta muy claro y a uno no le corre, ya con un .php uno podria ver donde esta mal.... de todos modos muy bueno  
gracias lo probare
gracias lo probare tambien
mil gracias por el aporte
xq no subes el archibo con todo listo para no enrredarnos y asi poder mirar todo listo, osea el archib de la base y un sitio de la app
Fuente del tutorial:http://www.wakaala.net/post/como-crear-un-sistema-de-notificaciones-en-php-y-mysql-como-el-de-wakaala-178.html

  bello ver como mi tutorial esta gustando tanto.. para ayuda y mas pueden seguirme en mi cuenta de Wakaala: http://www.wakaala.net/u/edwinmunguia

Saludos!  
Para dejar un comentario Registrate! o.. eres ya usuario? Accede!