Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: kakashi20 en 15 Marzo 2012, 17:37 PM

Título: temporizador
Publicado por: kakashi20 en 15 Marzo 2012, 17:37 PM
hola

Estoy en proceso de hacer un sistema que me calcule el tiempo de estadía en una habitación de un hotel.

La idea es que cuando alguien entra a la habitación le de clic a un botón en php de inicio y cuando salga la persona le de clic al botón finalizar ( o puede ser el mismo botón ) y me muestre el tiempo que duro la persona en la habitación.

pues esa es la idea.

No se como hacerlo.

alguien me podría ayudar ????

Muchas Gracias
Título: Re: temporizador
Publicado por: #!drvy en 15 Marzo 2012, 19:31 PM
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 (http://php.net/manual/es/function.time.php) 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..
Código (php) [Seleccionar]
<?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
mysql_select_db($db_nombre,$handle) or die(mysql_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';}
else {$nombre mysql_real_escape_string($_POST['nombre'],$handle);}

// Hacemos el query
$query "INSERT INTO dm_tiempo (usuario,inicio) VALUES ('".$nombre."','".time()."')";
// Ejecutamos el query
mysql_query($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
mysql_query($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
$resultado mysql_query($query);

// Por cada resultado, mostramos una fila
while($row mysql_fetch_array($resultado)){

// 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>


:xD

Saludos