Es bastante sencillo si se tiene una minima idea de PHP y MySql.. incluso se puede hacer sin base de datos..
Lo que haria yo seria:
Una base de datos, con 1 tabla (dm_tiempo).
Dicha tabla contendra 4 filas (id,usuario,inicio,fin).
Cuando haga click en el boton "Inicio", el PHP insertara en la base de datos el usuario + un
timestamp del inicio.
Cuando haga click en el boton "Finalizar", PHP sacara el inicio de la base de datos, y lo restara del tiempo actual. El resultado sera el tiempo que ha estado.
Llevandolo a la practica..
<?php
$db_usuario = 'root'; // Usuario db
$db_password = ''; // Contraseña db
$db_host = 'localhost'; // Servidor db
$db_nombre = 'dm_tiempo'; // Nombre db
// Iniciamos la conexion a la base de datos o mostramos error.
$handle = mysql_connect($db_host,$db_usuario,$db_password) or
die('No se ha podido establecer la conexion'); // Selecionamos la base de datos o mostramos error
// Comprobamos que el boton "iniciar" se ha clickeado
if(!empty($_POST['iniciarn'])){
// Si el nombre no esta definido lo definimos
// sino, lo limpiamos por si acaso.
if(empty($_POST['nombre'])){$nombre = 'nodefinido';}
// Hacemos el query
$query = "INSERT INTO dm_tiempo (usuario,inicio) VALUES ('".$nombre."','".time()."')"; // Ejecutamos el query
echo 'Usuario insertado.';
}
// Si enviamos el comando "parar" y el id del usuario..
if(!empty($_GET['parar']) && !empty($_GET['id'])){
// Limpiamos el id por si acaso
$id = (int)$_GET['id'];
// Hacemos el query
$query = "UPDATE dm_tiempo SET fin='".time()."' WHERE id='".$id."'"; // Ejecutamos el query
echo 'Usuario parado.';
}
?>
<html>
<head>
<title>Tiempos</title>
</head>
<body>
<h1>Iniciar un nuevo usuario</h1>
<form action="" method="POST">
<input type="text" name="nombre" value="" />
<input type="submit" value="Iniciar" name="iniciarn" />
</form>
<hr />
<h1>Lista de usuarios</h1>
<table border="1">
<tr><th>id</th><th>Nombre</th><th>Inicio</th><th>Fin</th><th>Parar</th></tr>
<?php
// Hacemos el query
$query = 'SELECT id,usuario,inicio,fin FROM dm_tiempo';
// Ejecutamos query
// Por cada resultado, mostramos una fila
// Comprobamos si ha sido finalizado (en caso de que si
// calculamos la diferencia).
if($row['fin']>0){
$tiempo = $row['inicio'] - $row['fin'];
// Horas
$tiempototal = $tiempo / (60*60);
// Valor absoluto + quitar decimales
$tiempototal = floor(abs($tiempototal)); }
else {$tiempototal = 'No finalizado.';}
// Imprimimos fila y celdas ID y Nombre.
echo '<tr><td>'.$row['id'].'</td><td>'.htmlentities($row['usuario'],ENT_QUOTES).'</td>';
// Imprimimos celda Inicio y Fin
// date('d/m/Y h:i:s) = fecha (dia/mes/año hora:minutos:segundos)
echo '<td>'.date('d/m/Y h:i:s',$row['inicio']).'</td><td>'.$tiempototal.' horas</td>';
// Damos la posibilidad de pararlo.
echo '<td><a href="?parar=1&id='.$row['id'].'" title"Parar">Parar</a></td>';
// Finalizamos fila
echo '</tr>';
}
?>
</body>
</html>
Saludos