Foros del Web » Programando para Internet » PHP »

onLoad =setInterval, seguir mostrando los datos recibidos, no refrescar

Estas en el tema de onLoad =setInterval, seguir mostrando los datos recibidos, no refrescar en el foro de PHP en Foros del Web. Hola. Tengo un codigo que lo que hace es chequear cada 2 segundos que haya una actualizacion en la base de datos mediante onload = ...
  #1 (permalink)  
Antiguo 28/12/2012, 17:07
 
Fecha de Ingreso: enero-2007
Mensajes: 12
Antigüedad: 17 años, 3 meses
Puntos: 0
onLoad =setInterval, seguir mostrando los datos recibidos, no refrescar

Hola.
Tengo un codigo que lo que hace es chequear cada 2 segundos que haya una actualizacion en la base de datos mediante onload = SetInterval().
En caso de que si exista esa actualizacion, se muestra en pantalla mediante "echo" en php. El problema que estoy teniendo es que si el usuario ingresa otro comando, la informacion mostrada anteriormente se borra.
Quiero hacer algo asi como un "cmd" o una shell, pero cada vez que se ingresa un nuevo comando la informacion es borrada.
Lo que tengo hasta ahora es:

Código:
<body style="background-color:#000000; color: #FFFFFF" onLoad="setInterval('Consulta(\'consulta.php\')',2000);">
/**/
Eso en la pagina que refresca y el que procesa:

Código:
if($id>0)
	{
	
		$mac=filtrar($_SESSION['mac']);
		
		include "dbconnect.php";
		
		$result=mysql_query("SELECT answer FROM shell_".$mac." WHERE finished=1 AND showed =0 AND id=" . $id) or die(mysql_error());
		
		while($row = mysql_fetch_array($result))
		{		
		$_SESSION['id']=0;
		echo $row["answer"]; // Show answer
		$result=mysql_query("UPDATE shell_" .$mac. " SET showed=1 WHERE id=" . $id); // Update for stop showing in screen
		}
				
		include "dbclose.php";
	}
Osea la informacion que recupera de la BD se muestra con el echo, yo quisiera que a medida que se vaya mostrando quede fija y no se borre.

Gracias
  #2 (permalink)  
Antiguo 29/12/2012, 06:20
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: onLoad =setInterval, seguir mostrando los datos recibidos, no refrescar

Para encontrale sentido a tu explicación deberíamos ver que hace tu script Consulta().

Pero supongo que lo que te está pasando es porque estás recargando la página, deberías hacerlo con ajax.

Yo tengo hecho un sistema que hace algo similar
http://emprear.com/polling/

La diferencia fundamental es que solo actualiza si se ingresaron nuevos registros, y lo de la notificación es completamente opcional

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 29/12/2012, 15:58
 
Fecha de Ingreso: enero-2007
Mensajes: 12
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: onLoad =setInterval, seguir mostrando los datos recibidos, no refrescar

Mi consulta.php es la siguiente:

Código PHP:
Ver original
  1. <?php
  2. header("Cache-Control: no-store, no-cache, must-revalidate");
  3. ?>
  4. <?php
  5.  
  6. //Comprobamos que existe una sesion y tiene la variable conectado, si no, redirige a la pagina principal
  7. if(empty($_SESSION['conectado']))
  8. {
  9.  
  10.    header ("Location: index.php");
  11.    exit;
  12. }
  13.  
  14. function filtrar($variable)
  15. {
  16.     return addcslashes(mysql_real_escape_string($variable),',<>');
  17. }
  18.    
  19. if(empty($_SESSION['id']))
  20. {
  21.  
  22.     $_SESSION['id']='0';
  23. }
  24. else
  25. {  
  26.     $id=$_SESSION['id'];
  27.    
  28.     //Caso de que se acabe de enviar un comando, y estemos a la espera de recibirlo en la BBDD
  29.    
  30.     if($id>0)
  31.     {
  32.    
  33.         $mac=filtrar($_SESSION['mac']);
  34.        
  35.         include "dbconnect.php";
  36.        
  37.         $result=mysql_query("SELECT answer FROM shell_".$mac." WHERE finished=1 AND showed =0 AND id=" . $id) or die(mysql_error());
  38.        
  39.         while($row = mysql_fetch_array($result))
  40.         {      
  41.         $_SESSION['id']=0;
  42.         echo $row["answer"]; // Show answer
  43.         $result=mysql_query("UPDATE shell_" .$mac. " SET showed=1 WHERE id=" . $id); // Update for stop showing in screen
  44.         }
  45.                
  46.         include "dbclose.php";
  47.     }
  48. }
  49.  
  50.  
  51. ?>
  #4 (permalink)  
Antiguo 29/12/2012, 16:03
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: onLoad =setInterval, seguir mostrando los datos recibidos, no refrescar

Cita:
Iniciado por krosty4782 Ver Mensaje
Mi consulta.php es la siguiente:

Código PHP:
Ver original
  1. <?php
  2. header("Cache-Control: no-store, no-cache, must-revalidate");
  3. ?>
  4. <?php
  5.  
  6. //Comprobamos que existe una sesion y tiene la variable conectado, si no, redirige a la pagina principal
  7. if(empty($_SESSION['conectado']))
  8. {
  9.  
  10.    header ("Location: index.php");
  11.    exit;
  12. }
  13.  
  14. function filtrar($variable)
  15. {
  16.     return addcslashes(mysql_real_escape_string($variable),',<>');
  17. }
  18.    
  19. if(empty($_SESSION['id']))
  20. {
  21.  
  22.     $_SESSION['id']='0';
  23. }
  24. else
  25. {  
  26.     $id=$_SESSION['id'];
  27.    
  28.     //Caso de que se acabe de enviar un comando, y estemos a la espera de recibirlo en la BBDD
  29.    
  30.     if($id>0)
  31.     {
  32.    
  33.         $mac=filtrar($_SESSION['mac']);
  34.        
  35.         include "dbconnect.php";
  36.        
  37.         $result=mysql_query("SELECT answer FROM shell_".$mac." WHERE finished=1 AND showed =0 AND id=" . $id) or die(mysql_error());
  38.        
  39.         while($row = mysql_fetch_array($result))
  40.         {      
  41.         $_SESSION['id']=0;
  42.         echo $row["answer"]; // Show answer
  43.         $result=mysql_query("UPDATE shell_" .$mac. " SET showed=1 WHERE id=" . $id); // Update for stop showing in screen
  44.         }
  45.                
  46.         include "dbclose.php";
  47.     }
  48. }
  49.  
  50.  
  51. ?>
No compañero, no queremos ver que hace tu consulta.php, queremos ver que hace tu función Consulta() de javascript

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 30/12/2012, 20:35
 
Fecha de Ingreso: enero-2007
Mensajes: 12
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: onLoad =setInterval, seguir mostrando los datos recibidos, no refrescar

A, lo que tengo es en Ajax, lo siguiente:

Código Javascript:
Ver original
  1. <script language="javascript">
  2.         $(document).ready(function() {
  3.            
  4.             $().ajaxStart(function() {
  5.                 $('#loading').show();
  6.                 //$('#result').hide();
  7.             }).ajaxStop(function() {
  8.                 $('#loading').hide();
  9.                 $('#result').fadeIn('slow');
  10.  
  11.             });
  12.             $('#form, #fat, #fo3').submit(function() {
  13.                
  14.                 $.ajax({
  15.                     type: 'POST',
  16.                     url: $(this).attr('action'),
  17.                     data: $(this).serialize(),
  18.                     success: function(data) {
  19.                         $('#result').html(data);
  20.                     }
  21.                 })
  22.                 var comando = document.getElementById("commands").value;
  23.                 comando = comando.replace(" ","");
  24.                 if(comando.substring(0,4)=="exit")
  25.                 {
  26.                     location.href="menuPrincipal.php";
  27.                 }
  28.  
  29.                 document.getElementById("commands").value='';
  30.                
  31.                 return false;
  32.             });
  33.         })  
  34.         </script>

Código Javascript:
Ver original
  1. function objetoAjax(){
  2.     var xmlhttp=false;
  3.     try {
  4.         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  5.     } catch (e) {
  6.         try {
  7.            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  8.         } catch (E) {
  9.             xmlhttp = false;
  10.         }
  11.     }
  12.  
  13.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  14.         xmlhttp = new XMLHttpRequest();
  15.     }
  16.     return xmlhttp;
  17. }
  18.  
  19. function MostrarConsulta(datos){
  20.     divResultado = document.getElementById('result');
  21.     ajax=objetoAjax();
  22.     ajax.open("GET", datos);
  23.     ajax.onreadystatechange=function() {
  24.         if (ajax.readyState==4) {
  25.             divResultado.innerHTML = divResultado.innerHTML + ajax.responseText;
  26.         }
  27.     }
  28.     ajax.send(null)
  29. }

Última edición por krosty4782; 30/12/2012 a las 23:32

Etiquetas: mysql, onload, refrescar, seguir, setinterval, sql, 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 02:44.