Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/04/2013, 00:36
dluna88
 
Fecha de Ingreso: abril-2010
Ubicación: Saltillo Mexico
Mensajes: 83
Antigüedad: 14 años
Puntos: 4
Respuesta: mensajes en el momento tipo facebook notificacione

Yo hice algo así con Javascript + PHP + Mysql. (con jQuery por comodidad)
Pero no me acuerdo muy bien y no se donde quedó el código...
Lo que hacía era añadir un campo a los mensajes para marcarlo como leído, y otro para marcar como notificación leída.

Entonces cuando llegaba un mensaje, siempre se insertaba como no leído (0) y la notificación en 0, cuando la notificación era 1, entonces ya había visto la notificación, y cuando el status del mensaje era 1, se marcaba como leído

Código HTML:
Ver original
  1. <div id="notif" onclick="setRead()"></div>
  2. <div style="display:none"></div>

Código Javascript:
Ver original
  1. //Ejecutar la funcion cada 5 segundos
  2. setInterval("checkMsj()",5000);
  3.  
  4. function checkMsj(){
  5.     $.ajax({
  6.             async:false,
  7.             url:"php/checkMsj.php",
  8.             success:function(resultado){ $("#div").html(resultado); }
  9.     });
  10. }
  11.  
  12. //Marcar la notificacion como leída
  13. function setRead(){
  14.     $.ajax({
  15.             async:false,
  16.             url:"php/setReaded.php",
  17.             success:function(){ $("#div").html(""); }
  18.     });
  19.  
  20. }


php/checkMsj.php :
Código PHP:
Ver original
  1. <?php
  2.  
  3. $user = $_SESSION['user'];
  4.  
  5. $cnx = new mysqli("host","user","pass","db");
  6.  
  7. $c = $cnx->query("SELECT * FROM mensajes WHERE statusNotif = '0' AND destinatario = '".$user."'");
  8.  
  9. $cantidadMsjNuevos = $c->num_rows;
  10.  
  11. if($cantidadMsjNuevos != 0){
  12.      ?>
  13.      <sctipt type="text/javascript">
  14.      $("#notif").html("Tienes <?php echo $cantidadMsjNuevos; ?> mensajes nuevos");
  15.      </script>
  16.     <?php
  17. }
  18.  
  19. ?>


php/setReaded.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. $user = $_SESSION['user'];
  4.  
  5. $cnx = new mysqli("host","user","pass","db");
  6.  
  7. $c = $cnx->query("UPDATE mensajes SET statusNotif = '1' WHERE destinatario = '".$user."' AND statusNotif = '0' ");
  8. ?>

Y así para mostrar el mensaje y marcarlo como leído, en diferentes scripts.