Jump to content

[Resolvido] Online/Offline


joaocasta

Recommended Posts

Bom dia, queria mostrar na página de perfil de cada membro do site se ele está online ou offline por isso disseram-me para usar na base de dados, na tabela dos users, duas colunas, "ultima_vez_ativo" com DATETIME e "ativo" com TINYINT com o default de 0..

Queria que, quando esse user fizesse o login no site trocasse o 0 para 1, de modo a que indica que ele está online..

Tenho este código:

$query = mysql_query(" UPDATE users set ultima_vez_ativo = now() WHERE id = " . $_SESSION['id']);

Se me pudessem ajudar agradecia! 😉

Link to comment
Share on other sites

$query = mysql_query(" UPDATE users set ultima_vez_ativo = now() AND ativo=1 WHERE id = " . $_SESSION['id']);

assim?

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

desculpa, nao e' o AND e' ,

$query = mysql_query(" UPDATE users set ultima_vez_ativo = now(),ativo=1 WHERE id = " . $_SESSION['id']);

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

faz um SELECT em vez de um update para ver os valores que estao na base de dados

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

e' mais ou menos assim que se faz, mas qual e' o erro/problema que tas a ter?

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

nao consegues porque? o problema e' no update, no select, na base de dados, php, css, etc,etc..

Ainda nao sou bruxo, nao das informacoes suficientes para conseguir-te ajudar

  • Vote 1

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

Primeiro tens que definir os critérios para considerares um utilizador online. Penso que no P@P considera-se que um utilizador está online se efectuou alguma acção nos últimos 15min.

Segundo este critério, podes verificar se um utilizador está online comparando a data da última acção (que estás a guardar na BD), com a data actual.

Link to comment
Share on other sites

Eu recomendo que crie uma tabela com colunas que digam respeito a id do usuário e o tempo da ultima ação que ele realizou no sistema, ai você pode criar uma função para determinar que o usuário efetuou alguma ação no sistema como isso:

mysql_query("UPDATE user_action SET last_activity = now() WHERE idusuario = $idusuario");
Link to comment
Share on other sites

Eu recomendo que crie uma tabela com colunas que digam respeito a id do usuário e o tempo da ultima ação que ele realizou no sistema, ai você pode criar uma função para determinar que o usuário efetuou alguma ação no sistema como isso:

mysql_query("UPDATE user_action SET last_activity = now() WHERE idusuario = $idusuario");

então explica lá porque razão deverá ele criar mais uma tabela, mais uma relação, etc, quando pode muito bem enfiar um simples campo na tabela de utilizadores, visto que obrigatoriamente terá de ser lido ?

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Opá... isto do "usuário" só me dá vontade de chorar

MASNathan, usuário é um termo muito usado no Brasil, percebe-se perfeitamente o significado. Peço que evites esses comentários, porque mesmo estando a brincar, algumas pessoas podem achar ofensivo.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

então explica lá porque razão deverá ele criar mais uma tabela, mais uma relação, etc, quando pode muito bem enfiar um simples campo na tabela de utilizadores, visto que obrigatoriamente terá de ser lido ?

Sua ideia é bem melhor mesmo, não havia pensado nisso na hora.

Opá... isto do "usuário" só me dá vontade de chorar

Hahaha, usuário tem algum significado em especial para os portugueses?

Link to comment
Share on other sites

Pronto já fiz a parte do online, mas agora a parte do offline é que não estou a conseguir, sei que tenho de meter algo no logout.php para destruir o registo na tabela.

No código do online fiz isto:

<?php
# INCLUDE THIS FILE WHERE YOU WANT TO LOG THE USER, FOR EXAMPLE
#
# INSIDE   index.php
# WRITE    include("isonline.php");

if(isset($_SESSION["isonline"])) {

# EXECUTE THIS QUERY

mysql_query ("UPDATE users_online " .
"SET ultima_visita = \"" . date("c") . "\" " .
"WHERE `id` = " . $_SESSION["isonline"]);

} else {

$_SESSION["isonline"] = mt_rand();

# EXECUTE THIS QUERY

mysql_query ("INSERT INTO users_online (`user`,`id`,ultima_visita) VALUES(" .
 (isset($_SESSION["id"]) ? $_SESSION["id"] : "0") . "," .
 $_SESSION["isonline"] . "," .
 "\"" . date("c") . "\"" .
")");

}
?>
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.