Foros del Web » Programando para Internet » PHP »

necesito hacer un sistema de avisos con ventana emergente

Estas en el tema de necesito hacer un sistema de avisos con ventana emergente en el foro de PHP en Foros del Web. hola amigos, como puedo hacer un sistema de avisos o notificaciones con el ultimo usuario que publico una noticia, algo asi como messenger, donde se ...
  #1 (permalink)  
Antiguo 04/06/2012, 13:59
 
Fecha de Ingreso: enero-2003
Ubicación: Santiago
Mensajes: 301
Antigüedad: 21 años, 10 meses
Puntos: 1
necesito hacer un sistema de avisos con ventana emergente

hola amigos, como puedo hacer un sistema de avisos o notificaciones con el ultimo usuario que publico una noticia, algo asi como messenger, donde se despliegue una ventanita en mi web con el usuario que publico una noticia.

el sgte codigo lo encontre en google pero no lo he podido implementar, necesito su ayuda o si tienen algun otro codigo o demo de como hacerlo se agredece desde ya.

Código PHP:
$sql="select * from mi tabla order by id";
$res mysql_query($sql);
$n mysql_num_rows($res);

//INICIAMOS LA VARIABLE SESSION QUE ALMACENA EL TOTAL DE REGISTROS DE LA CONSULTA REALIZADA

$_SESSION['total'] = $n;

//EJECUTAMOS EL CONDICIONAL PARA VERIFICAR SI HAY O NO NUEVOS REGISTROS O SOLICITUDES
if($_SESSION['total'] > $_SESSION['ultimo_total']){
    
//VALIDAMOS QUE LA VARIABLE SESSION "ULTIMO_TOTAL" NO ESTE VACIA PARA GARANTIZAR QUE NO ES PRIMERA VEZ QUE ENTRA A LA PAGINA DE LO CONTRARIO SI MUESTRA EL MENSAJE DE ALERTA
    
if($_SESSION['ultimo_total'] != ""){
        
//CALCULAMOS LOS REGISTROS O SOLICITUDES NUEVAS SIN REVISAR
        
$total $_SESSION['total'] - $_SESSION['ultimo_total'];
        
//IMPRIMIMOS EL ALERT O LA VENTANA DE NOTIFICACIÓN
        
echo "<script language=\"JavaScript\">\n";
        echo 
"alert('Estimado Usuario, Le notificamos que tiene ".$total." solicitudes nuevas por revisar');\n";
        echo 
"</script>"
        
//GUARDAMOS EL ULTIMO TOTAL CONTADO
        
$_SESSION['ultimo_total'] = $_SESSION['total'];
    }
    

__________________
Cristian...
  #2 (permalink)  
Antiguo 04/06/2012, 14:10
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 7 meses
Puntos: 528
Respuesta: necesito hacer un sistema de avisos con ventana emergente

En principio, el código pareciera estar bien. Verifica que el html se esté generando bien, o si no generas el html para el alert.
  #3 (permalink)  
Antiguo 04/06/2012, 14:32
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años, 1 mes
Puntos: 160
Respuesta: necesito hacer un sistema de avisos con ventana emergente

Podes probar tambien haciendo un print_r($_SESSION) para validar que los datos que evaluas en las condiciones sean correctos y/o existan y que sea por eso que no te entra a dibujar el alert
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #4 (permalink)  
Antiguo 04/06/2012, 15:14
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 12 años, 6 meses
Puntos: 32
Respuesta: necesito hacer un sistema de avisos con ventana emergente

No crees que seria mejor implementarlo con AJAX y PHP.
Si lo que quieres es que el usuario este navegando tu web y digamos "magicamente" aparezca una venta con algun contenido.
Me parece que la mejor manera es crear un request de AJAX que se ejecute periodicamente cada n segundos y consulte a esa
URL (donde esta tu codigo PHP) esperando una respuesta en XML o JSON o talves tambien HTML.
Y una vez recibida la respuesta disparar una funcion javascript que agregue un div al dom estilo la vetanita que quieres con tu contenido.
Yo soy partidario de hacer pequeños objectos estilo singleton en javascript, pero por ahi pueden implementarlo de otra manera.
Te dejo una idea de como puedes encarar la solucion.
Código Javascript:
Ver original
  1. function $ge(id){return document.getElementById(id);}
  2. var MiAlerta = {
  3.       wsData : {},
  4.       req : {},
  5.       url : "http://www.undominio.com/micodigo-que-devuelve-html.php",
  6.       crearXHR : function ()
  7.       {
  8.             var req = false;
  9.             if( XMLHttpRequest )
  10.             {
  11.                 req = new XMLHttpRequest();
  12.             }
  13.             else if(ActiveXObject)
  14.                 {
  15.                     var versiones = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
  16.                     for(var i = 0;versiones.length;i++)
  17.                     {
  18.                         try
  19.                         {
  20.                             req = new ActiveXObject(versiones[i]);
  21.                             return req;
  22.                         }
  23.                         catch(e){}
  24.                     }
  25.                 }      
  26.             return req;
  27.       },
  28.       doCallBack: function(){
  29.         MiAlerta.req = MiAlerta.crearXHR();
  30.         MiAlerta.req.onreadystatechange = function() {
  31.                 if (MiAlerta.req.readyState==4 && MiAlerta.req.status==200)
  32.                 {
  33.                     var _html = eval('(' + MiAlerta.req.responseText + ')');               
  34.                    
  35.                     $ge('milindoalerta').innerHTML  = _html;
  36.                     $ge('b').style.visibility = 'visible';                 
  37.                     //Volvemos a invocar el ask para que se vuelva a producir el callback
  38.                     MiAlert.ask();
  39.                 }
  40.             }          
  41.             MiAlerta.req.open('GET',MiAlerta.url,true);
  42.             MiAlerta.req.send();       
  43.            
  44.       },
  45.       ask : function(){
  46.         setTimeout(MiAlerta.doCallBack,10000);
  47.       },
  48.       init : function (){
  49.             // Aca puede inicializar lo que quieras con PHP para que quede mas prolijo.
  50.          
  51.       }
  52. };
  53. // Si dispones una clase manejadora de eventos inicializa la pequeña aplicacion al cargar la pagina
  54. Events.addEvent(window,"load",MiAlerta.init());


Este codigo debiera de ir en la pagina donde quieres que aparezca la ventanita magica, recuerda que deberas maquetarla y hacerla invisible. Para que se vuelva visible al mostrarla.

En cuanto al codigo php lo dejaria algo asi.
Código PHP:
Ver original
  1. // Por aca deberias recuperar las variables de session con session_start() o similar
  2.  
  3. $sql="select * from mi tabla order by id";
  4. $res = mysql_query($sql);
  5. $n = mysql_num_rows($res);
  6.  
  7. //INICIAMOS LA VARIABLE SESSION QUE ALMACENA EL TOTAL DE REGISTROS DE LA CONSULTA REALIZADA
  8.  
  9. $_SESSION['total'] = $n;
  10.  
  11. //No habias inicializado tu vairable ultimo_total
  12. if(!isset($_SESSION['ultimo_total']))
  13. {
  14.     $_SESSION['ultimo_total'] = "";
  15. }
  16.  
  17. //EJECUTAMOS EL CONDICIONAL PARA VERIFICAR SI HAY O NO NUEVOS REGISTROS O SOLICITUDES
  18. if($_SESSION['total'] > $_SESSION['ultimo_total']){
  19.     //VALIDAMOS QUE LA VARIABLE SESSION "ULTIMO_TOTAL" NO ESTE VACIA PARA GARANTIZAR QUE NO ES PRIMERA VEZ QUE ENTRA A LA PAGINA DE LO CONTRARIO SI MUESTRA EL MENSAJE DE ALERTA
  20.     if($_SESSION['ultimo_total'] != ""){
  21.         //CALCULAMOS LOS REGISTROS O SOLICITUDES NUEVAS SIN REVISAR
  22.         $total = $_SESSION['total'] - $_SESSION['ultimo_total'];
  23.         //IMPRIMIMOS EL ALERT O LA VENTANA DE NOTIFICACIÓN
  24.         echo "Estimado Usuario, Le notificamos que tiene ".$total." solicitudes nuevas por revisar";
  25.         $_SESSION['ultimo_total'] = $_SESSION['total'];
  26.     }



Espero se halla entendido, saludos
  #5 (permalink)  
Antiguo 04/06/2012, 15:16
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 12 años, 6 meses
Puntos: 32
Respuesta: necesito hacer un sistema de avisos con ventana emergente

Me olvide.
Dentro de init debes llamar a ask
Código Javascript:
Ver original
  1. init : function (){
  2.             // Aca puede inicializar lo que quieras con PHP para que quede mas prolijo.
  3.         MiAlerta.ask();  
  4.       }


Saludos.

Etiquetas: avisos, emergente, notificaciones, sistema, ultimo, ventanas, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:15.