Foros del Web » Programando para Internet » Javascript »

setTimeout

Estas en el tema de setTimeout en el foro de Javascript en Foros del Web. Bueno miren el codigo y aver como lo podria hacer que funcione ya que no funciona :S *Yo solo digo la pate de javascript la ...
  #1 (permalink)  
Antiguo 30/10/2008, 16:10
 
Fecha de Ingreso: diciembre-2007
Mensajes: 927
Antigüedad: 16 años, 4 meses
Puntos: 12
setTimeout

Bueno miren el codigo y aver como lo podria hacer que funcione ya que no funciona :S

*Yo solo digo la pate de javascript la parte de php ya sirve XD pero nececitan todo el codigo para saber.

salu2

Código PHP:
<? 
include("conectar.php");
?>
<script language="javascript">
function update() {
<? 
$ip 
$_SERVER['REMOTE_ADDR'];

$ano date('Y');
$mes date('m');
$dia date('j');
$hora date('H');
$min date('i') + (5);
$sec date('s');

$sql "SELECT * FROM activos";
$result mysql_query($sql) or die (mysql_error());
$row mysql_fetch_array($result);

do{
$ip2 $row['ip'];

if(
$ip == $ip2) {
$sql "UPDATE activos SET ano='$ano', mes='$mes', dia='$dia', hora='$hora', min='$min', sec='$sec', activo=0 WHERE ip='$ip'";
mysql_query($sql) or die (mysql_error());
$update 1;
}
}while(
$row mysql_fetch_array($result));

if(isset(
$update)){
}else{
$sql "INSERT INTO activos (ip, ano, mes, dia, hora, min, sec, activo) VALUES ('$ip', '$ano', '$mes', '$dia', '$hora', '$min', '$sec', 0)";
mysql_query($sql) or die (mysql_error());
}
?>
}
setTimeout ( "update()", 1000);
</script>

alguna idea?
  #2 (permalink)  
Antiguo 30/10/2008, 18:32
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: setTimeout

No puedes hacer que ese código funcione.

Primero se ejecuta PHP en el servidor. Cuando se ejecuta la función Javascript ya es en el navegador del cliente y el PHP ya pasó.

El único modo de volver a ejecutar el PHP es volver a llamar al servidor.
  #3 (permalink)  
Antiguo 30/10/2008, 19:13
 
Fecha de Ingreso: diciembre-2007
Mensajes: 927
Antigüedad: 16 años, 4 meses
Puntos: 12
Respuesta: setTimeout

osea algo asi funciona?
Código PHP:
<script language="javascript">
function update() {
<? include("visitas.php"); ?>
setTimeout ( "update()", 1000);
</script>
PD. VISITAS ESTA TODO EL CODIGO PASADO.
  #4 (permalink)  
Antiguo 30/10/2008, 19:48
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: setTimeout

A ver, te explico.

Tenemos este código:
Código php:
Ver original
  1. <script language="javascript">
  2. <?php
  3.     echo "/* hola */";
  4.     $a = 7;
  5. ?>
  6.     function update() {
  7.         <?php include("visitas.php"); ?>
  8.     }
  9.     setTimeout ( "update()", 1000);
  10. </script>

Eso está metido en una pagina.php, por ejemplo, ok? Entonces llamamos a... http://blabla.bka/pagina.php ok?

Lo que ocurre entonces es:

1º En el servidor se ejecuta el PHP.
Lo que ve el PHP es esto:
Código php:
Ver original
  1. textotextotexto
  2. <?php
  3.     echo "/* hola */";
  4.     $a = 7;
  5. ?>
  6. textotextotexto
  7.         <?php include("visitas.php"); ?>
  8. textotextotexto

Es decir, que PHP sólo ve lo que va en las etiquetas de PHP. Para él, el resto es todo texto.

Entonces se ejecuta el PHP y lo que sea texto se deja tal cual.

2º El resultado se envía al navegador.
Es decir, lo que se envía al navegador es esto:
Código html:
Ver original
  1. <script language="javascript">
  2. /* hola */
  3.     function update() {
  4.        
  5.     }
  6.     setTimeout ( "update()", 1000);

Es decir, lo que explicaba. Que el texto se deja tal cual, lo que digamos que imprima (con echo) lo imprime y lo que se tenga que ejecutar sin imprimir nada pues eso, se ha ejecutado ya pero no ha imprimido nada.

3º Cuando llega al navegador, este ejecuta el Javascript.
Código html:
Ver original
  1. <script language="javascript">
  2. /* hola */
  3.     function update() {
  4.        
  5.     }
  6.     setTimeout ( "update()", 1000);
Eso es exactamente lo que ejecuta. El navegador, no sólo no ve nada de PHP, es que ni siquiera sabe si había PHP o no. Al navegador no le llega nada de eso.

Y ya está. Se acabó. Cuando se ejecuta update() la función está vacía, no tiene nada porque no hay nada que ejecutar en el cliente.




Así que, repito: Si quieres que el PHP se vuelva a ejecutar, hay que volver a llamar al servidor. Puedes actualizar la página con Javascript, hacer una llamada con AJAX, ponerle una cabecera meta refresh o lo que sea, pero hay que volver a llamar a la pagina.php en el servidor. Porque el PHP sólo existe en el servidor.
  #5 (permalink)  
Antiguo 30/10/2008, 20:11
 
Fecha de Ingreso: diciembre-2007
Mensajes: 927
Antigüedad: 16 años, 4 meses
Puntos: 12
Respuesta: setTimeout

mm bueno y como el hasen las webs como facebook que llama cada X tiempo al servidor ?
  #6 (permalink)  
Antiguo 30/10/2008, 20:37
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: setTimeout

De dos formas: A veces mediante AJAX y a veces refrescando la página entera.
  #7 (permalink)  
Antiguo 30/10/2008, 21:41
 
Fecha de Ingreso: diciembre-2007
Mensajes: 927
Antigüedad: 16 años, 4 meses
Puntos: 12
Respuesta: setTimeout

mm no pero no se si estes familiarisado con facebook el chat y las notificaciones se actualizan y no toda la web entera. Pero si tienes alguan idea de ocmo ahcerla no importa el lengauje ponlo plz :D
  #8 (permalink)  
Antiguo 31/10/2008, 02:46
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: setTimeout

Repito, algunas veces lo hacen refrescando toda la página y otras veces lo hacen con AJAX (sin refrescar toda la página).

Busca información sobre AJAX y XMLHttpRequest, que hay muchos sitios donde lo explican.
  #9 (permalink)  
Antiguo 31/10/2008, 10:41
 
Fecha de Ingreso: diciembre-2007
Mensajes: 927
Antigüedad: 16 años, 4 meses
Puntos: 12
Respuesta: setTimeout

Ok gracuias lo buscare :D
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 16:34.