Hola, no sé si esto va realmente aquí por que también alterno con PHP para hacer esto, pero ya que es la función la que no me funciona... probaré suertes.
El caso estoy haciendo un script de usuarios conectados (registrados, mostrando el nick) y uso los parametros OnLoad y OnUnLoad en el body de la siguiente forma:
<body onload="conectar_usuario();" onunload="desconectar_usuario();">
Las funciones son las siguientes:
<script>
function desconectar_usuario(){
<?PHP
if($_SESSION['usuario']){
$desconectar_usuario_sql='UPDATE `usuarios` SET `conectado`= "No" WHERE `usuario`="'.$_SESSION['usuario'].'"';
if(mysql_query($desconectar_usuario_sql)){
echo "alert('Desconectado');";
}else{
echo "alert('NO');";
}
}else{ ?>
alert('no conectado');
<?PHP } ?>
}
</script>
<script>
function conectar_usuario(){
<?PHP if($_SESSION['usuario']){
$buscar_conectado_sql=mysql_query('SELECT * FROM `usuarios` WHERE `usuario`="'.$_SESSION['usuario'].'"');
$buscar_conectado=mysql_fetch_array($buscar_conectado_sql);
if($buscar_conectado['conectado']=="No"){
$conectar_usuario_sql='UPDATE `usuarios` SET `conectado`= "Si" WHERE `usuario`="'.$_SESSION['usuario'].'"';
if(mysql_query($conectar_usuario_sql)){
$buscar_conectado2_sql=mysql_query('SELECT * FROM `usuarios` WHERE `usuario`="'.$_SESSION['usuario'].'"');
$buscar_conectado2=mysql_fetch_array($buscar_conectado2_sql);
echo "alert('Conectado-".$buscar_conectado2['conectado']."');";
}else{
echo "alert('NO');";
}
}else{
echo "alert('Ya conectado');";
}
}else{ ?>
alert('no conectado');
<?PHP } ?>
}
</script>
¿Problema? pues que la función que se encuentre más abajo 8en este caso "conectar_usuario();" es la que se ejecuta en último lugar y se salta en onload y el onunload cuando quiere.
P.ej: cuando cierras la pestaña, al final en la BD acaba con un conectado "si" (o sea, que también se ha ejecutado el "desconectar_usuario();").
Sí, se nota a las mil leguas que no tengo ni idea de JavaScript, reñirme un poco y reubicarme si no os importa.
Saludos y gracias ! (: