Hola,
Para crear un sistema de notificación que se utilice como ventana emergente en Facebook, Quora, Linkedin, Twitter , etc., se puede seguir el siguiente enfoque.
Permítanme presentarles algunos fragmentos del código en PHP / MySQL / JavaScript / HTML para mostrar los conceptos. Se puede aplicar en cualquier otro lugar también en otras plataformas.
- ¿Puedo poner 4 anuncios de AdSense en una sola página web?
- Java parece tan divertido pero tan inútil. ¿Que hago con esto? Ya conozco PHP.
- Cómo desarrollar una herramienta de prueba de sitios web
- ¿En qué medida los empleadores pagan completamente los planes de pensiones para los desarrolladores de software en los Países Bajos?
- ¿Es el diseño web receptivo el futuro del desarrollo de sitios web?
La solución completa se puede dividir en 4 componentes:
- Tabla de base de datos para almacenar notificaciones iniciadas por usuario
- Script del lado del servidor que gestiona la notificación
- Código JavaScript frontal para mostrar notificaciones
- Pantalla administrativa para enviar notificaciones a los usuarios registrados
1er Paso: Tabla de base de datos para almacenar notificaciones registradas en el usuario:
Creemos una tabla MySQL [ notificaciones ] para almacenar notificaciones en el lado del servidor.
- id-Long Integer – PK (clave primaria, autoamplificado)
- Identificación única para la notificación
- creation_date_time – Varchar (30)
- Guardar fecha y hora como texto cuando el administrador crea notificaciones
- view_date_time – Varchar (30)
- Almacene la fecha y hora como texto cuando lo ve un usuario registrado
- user_id- Entero largo
- Identificación única (FK) de la tabla [ usuario ] para quien se ha creado la notificación
- notificación_texto – Varchar (255)
- Notificación de texto en formato HTML para que las imágenes también se puedan mostrar
- is_viewed- Varchar (3)
- “SÍ / NO” para indicar si la notificación ha sido vista o no por el usuario conectado
- El siguiente es el comando MySQL para crear la estructura de la tabla:
CREAR TABLA `notificaciones` (
`id` int (11) NO NULL,
`creation_date_time` varchar (30) NOT NULL,
`view_date_time` varchar (30) NOT NULL,
`user_id` int (11) NOT NULL,
`notify_text` varchar (255) NO NULL,
`is_viewed` varchar (3) NO NULL
) ENGINE = InnoDB DEFAULT CHARSET = latin1;
Segundo paso: secuencia de comandos del lado del servidor que gestiona las notificaciones:
Permítanos crear un archivo .php ( notifications_controller.php ) que se usará para administrar las notificaciones:
<? php
// Este script aceptará los siguientes tres comandos como parámetro GET y actuará de la siguiente manera:
// INSERT_NOTIFICATION – Inserta la notificación en la tabla [notificaciones]
// FETCH_NOTIFICATIONS: obtenga todas las notificaciones para un usuario de la tabla [notificaciones]
// DELETE_NOTIFICATIONS: elimina todas las notificaciones para un usuario de la tabla [notificaciones]
// SET_IS_VIEWED_FLAG – Llama a este comando desde el front-end cuando el usuario ha visto la notificación
$ comando = “”;
if (isset ($ _ GET [‘comando’])) {$ comando = $ _GET [‘comando’]; }
$ user_id = “”;
if (isset ($ _ GET [‘user_id’])) {$ user_id = $ _GET [‘user_id’]; }
if (strcmp ($ user_id, “”) == 0) {echo “
Error: user_id debe especificarse como parámetro GET.”; salida; }
if (strcmp ($ command, “”) == 0) {
echo “
Lo sentimos, no se especificó ningún comando. Saliendo …”;
salida;
}
// Abra la conexión de la base de datos MySQL aquí y seleccione la base de datos en la que se ha creado la tabla [notificaciones]
$ servername = “localhost”;
$ username = “root”;
$ contraseña = “”;
$ dbname = “notifications_db”;
// Crear conexión
$ conn = new mysqli ($ nombre de servidor, $ nombre de usuario, $ contraseña, $ dbname);
// Verifica la conexión
if ($ conn-> connect_error) {
morir (“Error de conexión:”. $ conn-> connect_error);
}
if (strcmp ($ command, “INSERT_NOTIFICATION”) == 0) {
$ notificación_texto = “”;
if (isset ($ _ GET [‘notificación_texto’])) {$ notificación_texto = $ _GET [‘notificación_texto’];
}
$ is_viewed = “”;
if (isset ($ _ GET [‘is_viewed’])) {$ is_viewed = $ _GET [‘is_viewed’]; }
if (strcmp ($ notificación_texto, “”) == 0) {
echo “
Error: notificación_texto debe especificarse como parámetro GET.”;
salida;
}
if (strcmp ($ is_viewed, “”) == 0) {
echo “
Error: is_viewed debe especificarse como parámetro GET.”;
salida;
}
// Insertar notificación en la tabla para un usuario dado
$ sql = “seleccionar * de las notificaciones”;
$ resultado = $ conn-> consulta ($ sql);
$ id = mysql_num_rows ($ resultado);
$ id = $ id + 1;
$ creation_date_time = date (“Y: m: d H: i: s”);
$ view_date_time = date (“Y: m: d H: i: s”);
$ is_viewed = “NO”;
$ sql = “INSERTAR EN` notificaciones` (`id`,` creation_date_time`, `view_date_time`,` user_id`, `notify_text`,` is_viewed`) VALUES (‘”. $ id.”‘, “‘. $ creation_date_time . “‘,'”. $ view_date_time. “‘,'”. $ user_id. “‘,'”. $ notify_text. “‘,'”. $ is_viewed. “‘)”;
$ resultado = $ conn-> consulta ($ sql);
$ conn-> close ();
salida;
}
if (strcmp ($ command, “FETCH_NOTIFICATIONS”) == 0) {
// Seleccione todas las notificaciones para un usuario_id dado y regrese en formato JSON
$ sql = “seleccione * de las notificaciones donde use_id = ‘”. $ user_id. “‘ y is_viewed = ‘NO'”;
$ res = mysqli_query ($ con, $ sql);
$ resultado = array ();
while ($ row = mysqli_fetch_array ($ res)) {
array_push ($ result, array (‘id’ => $ row [0], ‘creation_date_time’ => $ row [1], ‘view_date_time’ => $ row [2], ‘user_id’ => $ row [3] , ‘notify_text’ => $ fila [4], ‘is_viewed’ => $ fila [5]));
}
$ conn-> close ();
echo json_encode (array (“resultado” => $ result_array));
// Aquí puede formatear todas las notificaciones en un código HTML bien organizado al igual que Facebook para presentar de manera agradable
// Por ejemplo, se devuelve en formato JSON
salida;
}
if (strcmp ($ command, “DELETE_NOTIFICATIONS”) == 0) {
// Eliminar todas las notificaciones para un usuario_id dado
$ sql = “eliminar de notificaciones donde use_id = ‘”. $ user_id. “‘”;
$ res = mysqli_query ($ con, $ sql);
$ conn-> close ();
salida;
}
if (strcmp ($ command, “SET_IS_VIEWED_FLAG”) == 0) {
// Actualice aquí el indicador is_viewed a YES para la notificación y user_id
salida;
}
3er Paso: Código JavaScript de front-end para mostrar notificaciones:
Para mostrar notificaciones en la página HTML front-end, podemos hacer una llamada ajax a nuestro controlador (notifications_controller.php) de esta manera:
display_notifications.html
función show_notifications () {
// user_id = 1 ID del primer usuario
// comando = FETCH_NOTIFICATIONS
var show_notifications_url = “http://www.yourdomanin.com/notifications_controller.php?command=FETCH_NOTIFICATIONS&user_id=1”;
$ (documento) .ready (función () {
$ .ajax ({
url: show_notifications_url,
caché: falso
éxito: función (html) {
$ (“# notificación_resultados”). append (html);
// Cambia el contenido del DIV en la página de perfil del usuario donde se mostrarán las notificaciones
}}); });
} // función show_notifications
función startTimer () {
// llame a show_notifications
mostrar notificaciones();
// luego comienza el intervalo
setInterval (show_notifications, 30000); // Actualizar después de 30 segundos
} // función startTimer ()
// Llame a la función show_notifications automáticamente cuando se cargue la página HTML y configure un temporizador de JavaScript para que se actualice cada 30 segundos
Cuarto paso: pantalla administrativa para enviar notificaciones a los usuarios registrados:
Cree una GUI en formato HTML que acepte los detalles del usuario y los detalles de las notificaciones y se insertará en la tabla [notificaciones].
create_notifications.html
función create_notifications () {
// user_id = 1 ID del primer usuario
// comando = INSERT_NOTIFICATION
var create_notifications_url = “http://www.yourdomanin.com/notifications_controller.php?command=INSERT_NOTIFICATION&user_id=1&creation_date_time=201610101200&view_date_time=2016101012000¬ification_text=Hello&is_viewed=NO”;
$ (documento) .ready (función () {
$ .ajax ({
url: create_notifications_url,
caché: falso
éxito: función (html) {
}}); }); }
El vendedor listo para usar