Foros del Web » Programando para Internet » PHP »

Me estoy volviendo locoooo! :D

Estas en el tema de Me estoy volviendo locoooo! :D en el foro de PHP en Foros del Web. Me estoy volviendo loco, no se ya que hacer e probado mil formas a mi entender es correcto todo pero no me trabaja bien me ...
  #1 (permalink)  
Antiguo 21/03/2010, 05:58
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Exclamación Me estoy volviendo locoooo! :D

Me estoy volviendo loco, no se ya que hacer e probado mil formas a mi entender es correcto todo pero no me trabaja bien me desconecta aun asi.

veamos estoy haciendo un sistema con un IM chat privado entre los amigos bien cuando se logean los campos de online de la tabla users se ponen en 1 para detectar que estan conectado hasta aqui todo perfecto el usuario esta activo y online ¿pero que pasa si el usuario no sale pulsando desconectar? como se si ya no esta para apagar su icono del IM. Bien e pensado en registrar su ip cuando logean y luego ir comprobando si la ip esta en la base de datos como trabaja un contador de usuarios online. hasta bien tambien pero el codigo que e echo para que verifique si la ip esta o no en el campo de user online no me trabaja bien me tira a todos no se hace cosas raras aqui dejo el codigo haber si vosotros veis donde esta el error por que yo no lo veo para mi entender la comprobacion esta correcta-

Código PHP:
//asignamos un nombre memotecnico a la variable
$ip $REMOTE_ADDR;
//definimos el momento actual
$ahora time();


//actualizamos la tabla
//borrando los registros de las ip inactivas (24 minutos)
$limite $ahora-1*60;
$ssql "delete from gente_online where date < ".$limite;
$db->consulta($ssql);

//miramos si el ip del visitante existe en nuestra tabla
$ssql "select ip, date from gente_online where ip = '$ip'";
$result $db->consulta($ssql);

//si existe actualizamos el campo fecha
if ($db->cuenta($result) != 0$ssql "update gente_online set date = ".$ahora." where ip = '$ip'";
//si no existe insertamos el registro correspondiente a la nueva sesion
else $ssql "insert into gente_online (ip, date, id_usuario) values ('$ip', $ahora, '".$_SESSION['id']."')";

//ejecutamos la sentencia sql
$db->consulta($ssql);

//calculamos el numero de sesiones
$ssql "select ip from gente_online";
$result $db->consulta($ssql);
$usuarios $db->cuenta($result);

// compruebo las IP de los usuarios logeados y con el camppo online en 1

$resulta=$db->consulta("SELECT * FROM usuarios WHERE online=1");
while(
$dato=$db->fetch($resulta)){

// compruebo que la id del usuario no se encuentre entre los online
$resultaX=$db->consulta("SELECT * FROM gente_online WHERE id_usuario='".$dato['id']."'");

if(
$db->cuenta($resultaX)==0){
// si el resultado es 0 es que no esta y desactivo su IM como offline.    
$db->consulta("UPDATE usuarios SET online=0 WHERE id='".$dato['id']."'");
$db->consulta("UPDATE amigos SET online=0 WHERE id_amigo='".$dato['id']."'");

}



haber si sabes decirme o veis donde esta el problema ya que no lo logro y llevo 3 horas peleandome.

gracias
__________________
Si la vida te da la espalda tocale el culo
  #2 (permalink)  
Antiguo 21/03/2010, 09:30
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: Me estoy volviendo locoooo! :D

Creo que no es tan buena idea hacer un chat en PHP. Considero más util java.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #3 (permalink)  
Antiguo 21/03/2010, 09:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Me estoy volviendo locoooo! :D

Prueba este chat, analízalo y trata de hacerlo a la manera tuya http://www.forosdelweb.com/2813329-post33.html
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: Ninguno
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 06:48.