Comunidad de diseño web y desarrollo en internet online

Detectar una inserción en la BD y mostrarlo, con Ajax (Jquery)

Citar            
MensajeEscrito el 25 Mar 2011 12:21 pm
Buenas!

Estoy intentando crear una especie de tablón en el cual se vean reflejadas las nuevas inserciones en una tabla de la base de datos. Dando así, el efecto de actualización (como en el Top Tweets de Twitter). El efecto de actualización consistiría en poner la nueva inserción en el primer lugar del tablón, y el resto desplazarlos una posición.

Os cuento: lo primero que se me ocurrió, fué hacer algo así:

Código :

$(document).ready(function(){
   
       //Funcion para capturar lo que tengo mostrado actualmente en el tablón
       //Lo dejo en la variable 'datos'

   $.post('actualizar.php', datos, function(datos_recibidos){ //datos_recibidos en formato Json.
      
   /*Recibo datos procesados y gestiono para el efecto de actualizacion*/
      
   });

});


Pero claro, ésto tan sólo se conectará de manera asíncrona una vez, cuando el documento esté cargado. Yo lo que quiero es que esté constantemente comprobando que lo que tiene mostrando en el tablón es igual al contenido de la tabla 'tablón' en la base de datos, para que en el momento en el que sea distinto (es decir, se detecta que la tabla contiene algo que no está en el tablón, por lo tanto "ese algo" es la nueva inserción), se envie mediante $.post() en formato Json para poder gestionar con JavaScript y realizar el efecto de actualización.

Bien, lo segundo que se me ha ocurrido, creo que es un poco chapucero. Funcionar, supongo que funcionará, pero no sé si será desperdiciar rendimiento. Os cuento, se me ha ocurrido el ejecutar la función $.post() de Jquery cada vez que se pase el cursor por encima de mi div contenedor (el cual es la estructura principal que contiene toda la hoja). Con lo que, de manera invisible para el usuario, cada vez que éste pase el cursor por cualquier parte de la página, se ejecutará la función $.post() que es la encargada de realizar las gestiones JavaScript-Mysql.

El código, a grandes (grandísimos xD) rasgos, sería:

Código :

$(document).ready(function(){
   
       //Funcion para capturar lo que tengo mostrado actualmente en el tablón
       //Lo dejo en la variable 'datos'
   
   $('#contenedor').live('hover', function(evento){
      
      $.post('actualizar.php', datos, function(datos_recibidos){
         
   /*Recibo datos procesados y gestiono para el efecto de actualizacion*/
         
      });
   });

});


Pero claro, yo quiero que si el usuario está sentado delante del monitor, sin tocar el ratón... también se actualice y se ejecute $.post() , con lo que ninguna de las anteriores me valdría.

¿Cómo lo veis? ¿Se os ocurre alguna manera de poder hacerlo?

Venga, ¡¡muchas gracias!!

Por Gerupc

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Mar 2011 01:34 pm
Hola Gerupc

Para que se vaya actualizando cada cierto tiempo tu "live panel", deberias usar el metodo setInterval de javascript.

Código Javascript :

<script type="text/javascript">
   $(document).ready(function(){
      $.ajaxSetup({ cache: false });
       $('#message').load('message.php');
      setInterval(function() {
         $('#message').load('message.php');
        }, 10000);
   });
</script>


tu html seria algo como...

Código HTML :

<body>
<div id="container">
   <div>
      <h2>Live Panel</h2>
      <ul id="message">
      </ul>
   </div>
</div>
</body>


y en tu php solo botarias un "echo" del string que deseas mandar. Es obvio que debes de incluir las librerias de jquery.

Saludos :wink:

Por edge

57 de clabLevel



Genero:Masculino  

Software developer

chrome
Citar            
MensajeEscrito el 25 Mar 2011 02:16 pm
Hola Edge:

¡Muchísimas gracias! Es exactamente lo que estaba buscando. A ver qué tal me sale ésto del "Live panel" ;).

Por Gerupc

20 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.