2012-05-11 14 views
17

Actualmente estoy trabajando en una aplicación móvil que le permite pedir favoritos a sus amigos, es una interfaz HTML5 y un backend PHP. Estoy estancado en cuanto a cuál es la mejor manera de construir un sistema de notificaciones, más que el código real en sí mismo.La mejor manera de crear un sistema de notificación múltiple en PHP

El flujo de aplicaciones móviles es la siguiente: pide

  • un usuario para una favor
  • El usuario puede elegir; notificar a todos los amigos, notificar a los amigos favoritos o amigos cercanos notifdy
  • Dependiendo de lo que el usuario escogió, las personas se les notifica

¿Cuál es la mejor manera de hacer esto en PHP y MySQL? En realidad, no estoy pidiendo a nadie que me escriba el código PHP, sino que traduzca el esquema de tablas y campos de MySQL más ideal, ya que es a lo que me ato en la actualidad. Gracias de antemano por tu ayuda.

Respuesta

29

Se puede crear una tabla de notificaciones, tales como:

from_user | to_user | notification | seen 

y luego cada vez que desee notificar a un usuario que acaba de añadir un registro con las informaciones necesarias y establecer seen a 0/false.

Luego, cuando el usuario lee la notificación, establece ese parámetro en 1/true.

Ejemplo:

from_user | to_user | notification | seen 
    -   -   -   - 

usuario John notificar al usuario Jeff:

from_user | to_user | notification | seen 
    john  jeff  whatever.. 0 

usuario Jeff leer la notificación:

from_user | to_user | notification | seen 
    john  jeff  whatever.. 1 
+0

Básicamente, si el usuario elige notificar a sus amigos favoritos, primero hago una consulta para obtener los ID de usuario para los favoritos actuales de los usuarios, y luego hago una inserción masiva en una tabla de notificaciones para cada uno de esos ID. Parece lo suficientemente lógico. Algo como esto cruzó por mi mente originalmente, pero pensé que tal vez había otra manera. Esto parece lo lógico de hacer. –

+0

@Dwayne, sí. O puede hacer una subconsulta (http://dev.mysql.com/doc/refman/5.5/en/subqueries.html). De cualquier manera, esta parece ser la forma más lógica y limpia de hacer esto. También eliminaría todas las notificaciones vistas anteriores a 7-14 días para optimizar todo, pero eso depende de usted. – Shoe

+2

Un enfoque simple pero confiable +1 –

4

Por qué no simplemente una lista de todas las notificaciones en una tabla llamada "notificaciones"

id | user_id | from_user_id | notification 
  • id = notificación Identificación
  • user_id = que es la notificación de?
  • from_user_id = ¿Quién envió la notificación?
  • notificación = el mensaje

Entonces, como pseudocódigo:

// Create a notification from User A to User B 
$this->db->insert ('notifications', array ('user_id' => $friends_id, 'from_user_id' => $current_user_id, 'notification' => $message)); 

// The meanwhile, on your home page or somewhere, wherever you want to display notifications 
$this->db->where ('user_id', $current_user_id) 
$notifications = $this->db->get ('user_id'); 
foreach ($notifications as $notification) 
{ 
     // Display the notification as needed 
     // Optionally delete the notification as it is displayed if it is a "one off" alert only 
} 
+0

Gracias por responder mate. Fui con la respuesta de Jeffrey cuando publicó primero, pero le agradezco que se tome el tiempo para responder, así que le voté. –

4

La extensión de respuesta de Jeffrey:

id | from_user | to_user | notification | seen | timestamp 
-   -   -   -   -   - 

marca de tiempo le ayudará a identificar en qué momento se produjo particular la notificación. También puede crear momentos de tiempo extendiendo su secuencia de comandos con timeago.js o Livestamp.js

También le ayudará a crear una línea de tiempo de notificación y el mantenimiento de la notificación sería más simple.

Cuestiones relacionadas