Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/03/2010, 11:51
paulkees
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Quién está en linea

Antes que nada, me olvidé de comentar al inicio del post que, fundamentalmente me guié para hacer esto con este post.

Bueno, al parecer el problema de que no guardaba datos en la tabla era por el campo "ip int(11) NOT NULL default '0';", que comprobando da error de "Data truncated for column 'ip' at row '1'"

Por lo tanto, cambié la tabla y la dejé así:

Código:
CREATE TABLE `enlinea` (
  `ip` varchar(32) NOT NULL default '0',
  `usuario` varchar(32) NOT NULL default '0',
  `fecha` int(11) NOT NULL default '0',
  `tipo` varchar(32) NOT NULL default '0',
  PRIMARY KEY  (`usuario`)
) ENGINE=MyISAM;
Cambié el PRIMARY KEY a "usuario" por unos problemitas que lñuego explico.

La "function" quedó así:

Código PHP:
<?php
session_start
();

//Conexión a la base de datos
          
include($_SERVER['DOCUMENT_ROOT']."/conectarse.php");
          
conectarse();

if(!
function_exists("enlinea")){
function 
enlinea(){

global 
$pagina$get;

$fecha time() ; 
$tiempo 
$tiempo $fecha-$tiempo*60 
$ip $_SERVER['REMOTE_ADDR'] ; 
$usuario $_SESSION['user'] ;
 
mysql_query("DELETE FROM enlinea WHERE fecha < $tiempo") ; 

$query mysql_query("SELECT ip FROM enlinea WHERE ip = '$ip'") ; 
if(
mysql_num_rows($query) == 0) { 
mysql_query("INSERT INTO enlinea VALUES ('$ip','anonimo','$fecha','anonimo')") ; 

else { 
mysql_query("UPDATE enlinea SET fecha = '$fecha' WHERE ip = '$ip'") ; 
}

if(
$_SESSION['user']) { 
$query mysql_query("SELECT * FROM enlinea WHERE usuario = '$usuario'") ; 
if(
mysql_num_rows($query) == 0) { 
mysql_query("INSERT INTO enlinea VALUES ('$ip','$usuario','$fecha','usuario')") ; 

else { 
mysql_query("UPDATE enlinea SET fecha = '$fecha' WHERE usuario = '$usuario'") ; 


}
}
?>
Y con este script podemos comprobar el funcionamiento

Código PHP:
<?php
//Conexión a la base de datos
          
include($_SERVER['DOCUMENT_ROOT']."/conectarse.php");
          
conectarse();

global 
$pagina$get;

/* Usuarios en linea */
$query=mysql_query("SELECT * FROM enlinea WHERE tipo = 'usuario'");
$usuarios mysql_num_rows($query);

/* Anónimos */
$query mysql_query("select * from enlinea where usuario = 'anonimo'") ; 
$anonimos mysql_num_rows($query) ;
 
/* total */
$query mysql_query("select * from enlinea");
$total mysql_num_rows($query);

echo 
ONLINE_."<br>";
echo 
TOTAL_ONLINE " " $total "<br>";
echo 
TOTAL_ANONIMOS " " $anonimos "<br>";
echo 
TOTAL_USUARIOS " " $usuarios;
echo
"<br>";

$query = @mysql_query("SELECT * FROM enlinea WHERE tipo = 'usuario'");
while(
$datos = @mysql_fetch_array($query)){
echo 
"| <a href='".$pagina."?".$get."=registrados&u=".$datos[id]."'>".$datos[usuario]."</a> | \n";
}
?>
ESTA FUNCIONANDO! pero hay que pulir algunas cosas...

Sigo trabajando y haciendo pruebas... recordar que tengo pocos conocimientos, si alguien sugiere o corrige vienvenido sea!!!