Foro de elhacker.net

Programación => 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
  1. <?php
  2. $db_usuario = 'root'; // Usuario db
  3. $db_password = ''; // Contraseña db
  4. $db_host = 'localhost'; // Servidor db
  5. $db_nombre = 'dm_tiempo'; // Nombre db
  6.  
  7.  
  8. // Iniciamos la conexion a la base de datos o mostramos error.
  9. $handle = mysql_connect($db_host,$db_usuario,$db_password) or die('No se ha podido establecer la conexion');
  10. // Selecionamos la base de datos o mostramos error
  11. mysql_select_db($db_nombre,$handle) or die(mysql_error());
  12.  
  13. // Comprobamos que el boton "iniciar" se ha clickeado
  14. if(!empty($_POST['iniciarn'])){
  15.  
  16. // Si el nombre no esta definido lo definimos
  17. // sino, lo limpiamos por si acaso.
  18. if(empty($_POST['nombre'])){$nombre = 'nodefinido';}
  19. else {$nombre = mysql_real_escape_string($_POST['nombre'],$handle);}
  20.  
  21. // Hacemos el query
  22. $query = "INSERT INTO dm_tiempo (usuario,inicio) VALUES ('".$nombre."','".time()."')";
  23. // Ejecutamos el query
  24. mysql_query($query);
  25. echo 'Usuario insertado.';
  26. }
  27.  
  28. // Si enviamos el comando "parar" y el id del usuario..
  29. if(!empty($_GET['parar']) && !empty($_GET['id'])){
  30.  
  31. // Limpiamos el id por si acaso
  32. $id = (int)$_GET['id'];
  33.  
  34. // Hacemos el query
  35. $query = "UPDATE dm_tiempo SET fin='".time()."' WHERE id='".$id."'";
  36. // Ejecutamos el query
  37. mysql_query($query);
  38.  
  39. echo 'Usuario parado.';
  40. }
  41. ?>
  42.  
  43. <html>
  44. <head>
  45. <title>Tiempos</title>
  46. </head>
  47. <body>
  48. <h1>Iniciar un nuevo usuario</h1>
  49. <form action="" method="POST">
  50. <input type="text" name="nombre" value="" />
  51. <input type="submit" value="Iniciar" name="iniciarn" />
  52. </form>
  53. <hr />
  54. <h1>Lista de usuarios</h1>
  55. <table border="1">
  56. <tr><th>id</th><th>Nombre</th><th>Inicio</th><th>Fin</th><th>Parar</th></tr>
  57. <?php
  58. // Hacemos el query
  59. $query = 'SELECT id,usuario,inicio,fin FROM dm_tiempo';
  60.  
  61. // Ejecutamos query
  62. $resultado = mysql_query($query);
  63.  
  64. // Por cada resultado, mostramos una fila
  65. while($row = mysql_fetch_array($resultado)){
  66.  
  67. // Comprobamos si ha sido finalizado (en caso de que si
  68. // calculamos la diferencia).
  69. if($row['fin']>0){
  70. $tiempo = $row['inicio'] - $row['fin'];
  71. // Horas
  72. $tiempototal = $tiempo / (60*60);
  73. // Valor absoluto + quitar decimales
  74. $tiempototal = floor(abs($tiempototal));
  75. }
  76. else {$tiempototal = 'No finalizado.';}
  77.  
  78. // Imprimimos fila y celdas ID y Nombre.
  79. echo '<tr><td>'.$row['id'].'</td><td>'.htmlentities($row['usuario'],ENT_QUOTES).'</td>';
  80.  
  81. // Imprimimos celda Inicio y Fin
  82. // date('d/m/Y h:i:s) = fecha (dia/mes/año hora:minutos:segundos)
  83. echo '<td>'.date('d/m/Y h:i:s',$row['inicio']).'</td><td>'.$tiempototal.' horas</td>';
  84.  
  85. // Damos la posibilidad de pararlo.
  86. echo '<td><a href="?parar=1&id='.$row['id'].'" title"Parar">Parar</a></td>';
  87.  
  88. // Finalizamos fila
  89. echo '</tr>';
  90. }
  91.  
  92. ?>
  93.  
  94. </body>
  95. </html>

 :xD

Saludos