Autor Tema: [Problema] Funciones  (Leído 438 veces)

Desconectado judoka

  • PHPero Avanzado
  • ****
  • Mensajes: 255
  • Karma: 4
  • Sexo: Masculino
  • Programando hasta lo mas alto.
    • Ver Perfil
[Problema] Funciones
« en: 09 de Agosto de 2011, 02:30:22 am »
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:
Citar
<body onload="conectar_usuario();" onunload="desconectar_usuario();">
Las funciones son las siguientes:
Citar
<script>
function desconectar_usuario(){
<?
PHP 
if($_SESSION[&#39;usuario&#39;]){ 

 
$desconectar_usuario_sql=&#39;UPDATE `usuarios` SET `conectado`= "No" WHERE `usuario`="&#39;.$_SESSION[&#39;usuario&#39;].&#39;"&#39;;
 
if(mysql_query($desconectar_usuario_sql)){
	
echo 
"alert(&#39;Desconectado&#39;);"
 }else{
	
 echo 
"alert(&#39;NO&#39;);";
 }

}else{ 
?>
alert(&#39;no conectado&#39;);
<?PHP ?>
}
</script>
<script>
function conectar_usuario(){
<?PHP if($_SESSION[&#39;usuario&#39;]){ 
 
 
$buscar_conectado_sql=mysql_query(&#39;SELECT * FROM `usuarios` WHERE `usuario`="&#39;.$_SESSION[&#39;usuario&#39;].&#39;"&#39;);
 
$buscar_conectado=mysql_fetch_array($buscar_conectado_sql);
 
 if(
$buscar_conectado[&#39;conectado&#39;]=="No"){
  
$conectar_usuario_sql=&#39;UPDATE `usuarios` SET `conectado`= "Si" WHERE `usuario`="&#39;.$_SESSION[&#39;usuario&#39;].&#39;"&#39;;
  
if(mysql_query($conectar_usuario_sql)){
	
   
$buscar_conectado2_sql=mysql_query(&#39;SELECT * FROM `usuarios` WHERE `usuario`="&#39;.$_SESSION[&#39;usuario&#39;].&#39;"&#39;);
       
$buscar_conectado2=mysql_fetch_array($buscar_conectado2_sql);
	
echo 
"alert(&#39;Conectado-".$buscar_conectado2[&#39;conectado&#39;]."&#39;);"; 
  
}else{
	
 echo 
"alert(&#39;NO&#39;);";
  }
 
 }else{
	
echo 
"alert(&#39;Ya conectado&#39;);";  
 }

}else{ 
?>
alert(&#39;no conectado&#39;);
<?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 ! (:

Comunidad PHPeros

[Problema] Funciones
« en: 09 de Agosto de 2011, 02:30:22 am »

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[Problema] Funciones
« Respuesta #1 en: 09 de Agosto de 2011, 12:16:04 pm »
No puedes incluir PHP en una función javascript. Tu PHP se ejecutará en el servidor antes de que se mustre siquiera la página, independientemente de las funciones. Debes usar ajax para eso. Y, además, onunload no es una buena solución porque no siempre se ejecuta.

Desconectado judoka

  • PHPero Avanzado
  • ****
  • Mensajes: 255
  • Karma: 4
  • Sexo: Masculino
  • Programando hasta lo mas alto.
    • Ver Perfil
Re:[Problema] Funciones
« Respuesta #2 en: 10 de Agosto de 2011, 01:55:02 am »
¿AJAX? ¿Tiene alguna función para lo que busco? Podrías orientarme un poco west. Gracias, ahora caigo. Cada uno se ejecuta a un lado (uno del servidor y el otro del cliente, ¿no?)

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[Problema] Funciones
« Respuesta #3 en: 10 de Agosto de 2011, 02:33:25 am »
Así es, PHP actúa del lado del servidor y javascript del cliente.

AJAX no tiene una función específica para eso, sencillamente llama archivos. Pero esto no te servirá.
Olvídate del JS para eso, deberás usar PHP. Lo que yo suelo hacer es, antes de cargar los usuarios online, hago una query en la que desconecto (poniendo desconectado='0' en la db, por ejemplo) a todos los usuarios offline más de X tiempo. Creo que hay un tutorial de eso en la sección de PHP.

Desconectado judoka

  • PHPero Avanzado
  • ****
  • Mensajes: 255
  • Karma: 4
  • Sexo: Masculino
  • Programando hasta lo mas alto.
    • Ver Perfil
Re:[Problema] Funciones
« Respuesta #4 en: 10 de Agosto de 2011, 03:29:43 am »
OK gracias west de nuevo, probare de esa forma. Podeis cerrar.