Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/05/2008, 09:46
guru3k
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 19 años, 5 meses
Puntos: 0
Comporbacion/Ejecucion automatica de funciones PHP con AJAX

Buenas tardes. Llevo un tiempo buscando por el foro y por google y no doy con lo que neceito, asi q a ver si preguntandolo salgo de dudas.

Para el desarrollo que estoy llebando a cabo me gustaria disponer de una especie de "zonas calientes" que se autocomporbasen a si mismo.
Algo asi como que dichas zonas comporbasen una determinada variable y pintasen en cada momento su valor, pero que la comporbacion se desencadenase automaticamente.
Algo asi como ocurre cuando te llega un nuevo correo a una cuenta de gmail, que no se necesita recargar la web, ésta se recarga ella sola cuando detecta que llega un nuevo mensaje.

Os explico un pequeño resumen de cual es mi estructura.
Dispongo de una web normal con esta estructura
Código:
<html>
<head> ... </head>
<body>
....
<?php
funcion();
?>
...
</body>
Esa funcion devuelve un valor dependiendo de una serie de acciones, supongamos por ejemplo
Código:
function funcion(){
	return $_SESSION['contador']++;
}
Y ademas se dispone de otra funcion que modifica el valor de dicha variable de sesion
Código:
function funcion2(){
	$_SESSION['contador']=2;
}
Cone sto se conseguiria que, de poderse hacer esa consulta automatica a la funcion "funcion()", si desde otra parte de la web, bajo la misma sesion se accediera a "funcion2()", el valor a mostrar en la web cambiaria automaticamente.

No se si me he explicado con claridad, pero vamos, el ejemplo de la llegada de correos a gmail es exactamente lo que busco.
Como hacer eso con PHP y AJAX, con algun framework o con algo que se lo parezca.
Lo mas importante es que dicha ejecucion o comprobacion, se debe hacer sde manera trasparente, sin intervencion de usuario.

Esa idea de "zonas calientes" que ejecuten algo, bien sea una comporbacion o la ejecucion de algo, me parece algo que cae dentro de las funcionalidades aplicadas de ajax y me ha extrañado no encontar nada.

He porbado a usar algo como esto:
Usar javascript para la ejecucion de un fichero php que contiene la funcion "funcion()"
Código:
 function objetoAjax(){
  var xmlhttp=false;
  try {
   xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
   try {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (E) {
    xmlhttp = false;
   }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
   xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
 }

 function funcion(){

  divResultado = document.getElementById('res');
  //divResultado.innerHTML= '<img src="./load.gif"> <b>Verificando la existencia del fichero</b>.';
  var ruta='./fichero_php_con_funcion.php';     //  <------ FICHERO CON funcion()

  ajax=objetoAjax();
  ajax.open("GET", ruta);
  
  ajax.onreadystatechange=function() {
   if (ajax.readyState==4) {
	divResultado.innerHTML = ajax.responseText
   } else {
   }
  }
  ajax.send(null) 
  setTimeout("funcion()",1000);   <--- LLAMADA AUTOMATICA A SI MISMA
 }
Y en la web llamar a este script de javascript
Código:
<html>
<head> ... </head>
<body>
....
<script>
funcion();
</script>
...
</body>
Pero el resultado no es el deseado.... me imagino xq esta solucion es bastante chapucera

De manera que si el post no ha quedado demasiado lioso (por haber intentado explicar con varios ejemplos lo que intento hacer), si alguien consigue darme un poquito de luz por donde buscar, lo agradeceria mucho.