PHP - insertar campo en BBDD al cerrar ventana php

   
Vista:

insertar campo en BBDD al cerrar ventana php

Publicado por Elisa (71 intervenciones) el 17/09/2014 12:29:51
Buenos días.

Necesito que, cuando cierro una ventana de mi navegador, se inserte un 0 en mi BBDD. Expongo mejor la cuestión.

Tengo en un .php un botón que me lleva a un segundo .php. Dentro de ese php, lo que tengo en primera instancia es introducir un 1 en un campo de mi BBDD, y después un <a href> a la url a la que quiero acceder, abriéndose una nueva ventana. Lo que quiero es que, al cerrar esa ventana, se inserte un 0 en la misma BBDD.

He visto que es posible crear funciones en javascript que notifiquen si has cerrado la ventana o no a partir de diferentes botones (abrir ventana, cerrar ventana, comprobar estado de la ventana). El problema es, que a mí el botón no me puede abrir directamente la ventana, ya que quiero que no sólo se abra, sino que me inserte algo en una bbdd, y no se si sería posible introducir código php dentro de javascript, por lo que estoy un poco atascada.

Si pudiérais aportarme alguna información, lo agradecería!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

insertar campo en BBDD al cerrar ventana php

Publicado por Gonzalo (338 intervenciones) el 17/09/2014 15:14:14
php no tiene manera de detectar si alguien dio click en la X para cerrar la ventana.

pero con javascript si se puede, solo que no se cual orden se pudiera usar para detectar ese evento.

aqui el problema es que javascript no interpreta php, debes llamar una pagina de php para ejecutar ese codigo.

ok, en resumen:

detectar si el usuario cerro la ventana.
disparar el evento OnClose (si es que existe) con javascript
llamar un procedimiento para actualizar una base de datos, desde javascript puedes llamar una pagina php.

pregunta: y si en lugar de cerrar la ventana ... el usuario cambia de pagina? tal vez se pase a google o a yahoo, no se, este seria un evento diferente, sabes como detectar si el usuario cambia de servidor?

investigo el evento OnClose y te aviso, mientras tanto investiga acerca del cambio de servidor.

suerte, salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

insertar campo en BBDD al cerrar ventana php

Publicado por Gonzalo (338 intervenciones) el 17/09/2014 17:13:47
bien mira, los eventos para capturar si el usuario cierra la ventana podrian ser estos

1
<body  onunload="Ajax();" onbeforeunload="Ajax();">

hice el reporte usando esas fnciones y salio bien.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<html>
<head>
<title>OnClose</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javascript" style="text/javascript">
function Ajax()
{
	var hr = new XMLHttpRequest();
 
	if(window.XMLHttpRequest)
	{
		xmlhttp=new XMLHttpRequest();
	}else
	{
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
 
	var url="CerrarArchivo.php";
	var vars="RSM1=";
 
	hr.open("POST",url,true);
 
	hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	hr.onreadystatechange=function()
	{
		if(hr.readyState==4 && hr.status==200)
		{
			var returndata=hr.responseText;
      document.getElementById("DivCorrio").innerHTML=returndata;
		}
	}
	hr.send(vars);
}
</script>
</head>
<body  onunload="Ajax();" onbeforeunload="Ajax();">
 
<div id="DivCorrio">
prueba 3
</div>
 
</body>
</html>

y CerrarArchivo.php

1
2
3
4
5
6
7
8
<?php
 
$f=fopen("ojo.txt","w");
fwrite($f,"actualizar base de datos aqui");
fclose($f);
 
echo('listo');
?>

espero sea de ayuda, suerte, salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

insertar campo en BBDD al cerrar ventana php

Publicado por Elisa (71 intervenciones) el 18/09/2014 10:43:41
Muchísimas gracias. Lo pruebo ahora mismo.

El problema es que tengo una interfaz con diferentes opciones, y una es el arranque de un VNC. Cuando pulso un botón, se abre una ventana nueva del navegador a la vez que se inserta un 1 en la columna correspondiente a la tabla de mi BBDD. Por eso, lo que necesito es que al cerrar dicha ventana, aparezca en la misma tabla un 0.

Muchas gracias de nuevo, voy a probar el código que me has propuesto, soy nueva en AJAX y se me complica un poco entenderlo todo bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar