Estou extraindo dados de uma tabela, onde tenho hora entrada no sistema e hora saida do sistema , e dai subtraio uma da outra e recupero assim o tempo online.
pode ocorrer de não ter o tempo de saida, dai atribuo o valor de entrada a ela somada com mais uma hora.
No entanto preciso com que nessa listagem caso o proximo valor de entrada no sistema seja menor que a ultima hora de saida do sistema, esse ultimo valor de saida seja igual ao da proxima entrada.
Alguma ideia?
<?php
include("inc/conecta.php");
$sql = "SELECT l.usuario, l.id, l.ip, u.nome, u.sobrenome, l.tempo, l.acao
FROM log l
INNER JOIN usuario u ON u.id = l.userid
WHERE l.userid = 2 and l.acao in ('login','logout') ORDER BY l.tempo ASC";
$result = mysql_query($sql, $conn);
function calcula_tempo($logout, $login){
$tempoFinal = $logout-$login;
return $tempoFinal;
}
//---------------------------------------------------------------------------------------------
$linha = 1;
$totalMinutos = 0;
$login = 0;
$logout = 0;
while($d = mysql_fetch_array($result)){
//quando a lista começa com logout então anula o login
if(($d['acao'] == 'logout') && (empty($login))){
$login = $d['tempo'];
}
//Quando tem um segundo login sem a existência do logout
if(($d['acao'] == 'login') && (!empty($login))){
$logout = $login + 3600;
$totalMinutos += calcula_tempo($logout, $login);
$linha++;
unset($login);
unset($logout);
unset($tempoFinal);
}
//quando não há um logout em um tempo menor que uma hora
// aqui preciso verificar se o ultimo logout e maior que o loginm que vem a seguir, caso maior ele
//muda a variavel antiga de logout e atribui o valor dela igual ao desse login
if(($d['acao'] == 'login') && (!empty($login))){
$logout = $login + 3600;
echo date("d-m-Y G:i:s", $login)." ";
echo date("d-m-Y G:i:s", $logout)."<br/>";
}
//grava login na variávael
if($d['acao'] == 'login'){
$login = $d['tempo'];
}
//grava logout na variável
if($d['acao'] == 'logout'){
$logout = $d['tempo'];
}
//existe login e logout
if((!empty($login))&& (!empty($logout))){
$totalMinutos += calcula_tempo($logout, $login);
$linha++;
unset($login);
unset($logout);
unset($tempoFinal);
}
}
?>
Question
tlima
Estou com o seguinte problema:
Estou extraindo dados de uma tabela, onde tenho hora entrada no sistema e hora saida do sistema , e dai subtraio uma da outra e recupero assim o tempo online.
pode ocorrer de não ter o tempo de saida, dai atribuo o valor de entrada a ela somada com mais uma hora.
No entanto preciso com que nessa listagem caso o proximo valor de entrada no sistema seja menor que a ultima hora de saida do sistema, esse ultimo valor de saida seja igual ao da proxima entrada.
Alguma ideia?
Edited by tlimaLink to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.