Foros del Web » Programando para Internet » PHP »

Acumulador horas semana!!

Estas en el tema de Acumulador horas semana!! en el foro de PHP en Foros del Web. Hola estoy implementando una página xa que ls empleados fichen la entrada y la salida. Esta es: Cita: <?php $ftiempo = time (); $hora = ...
  #1 (permalink)  
Antiguo 12/06/2008, 04:14
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Acumulador horas semana!!

Hola estoy implementando una página xa que ls empleados fichen la entrada y la salida. Esta es:

Cita:
<?php $ftiempo = time ();
$hora = date ('G:i:s');
echo "Son las ";
echo "$hora horas <br>";
$dia = array ("Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sabado");
$mes = array ("Diciembre", "Enero", "Febreo", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre");
$fechadia = date('j');
$fechames = date('n');
$fechaanyo = date ('Y');
$fecha = date ("j/n/Y");
echo "del dia " .$dia[date('w')];
echo " ";
echo "$fechadia";
echo " de " .$mes[$fechames];
echo " del ";
echo "$fechaanyo";
echo "<br>";

$ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
$nombredeip= gethostbyaddr($ip);

?></p>
<br />
<form name="ficha" method="post" action="confirm.php" >
<table border=0>
<tr><td>Fiche:</td></tr>
<tr><td><input type="Radio" name="ensa" value="Entrada" checked> Entrada</td></tr>
<tr><td><input type="Radio" name="ensa" value="Salida"> Salida</td></tr>

<tr><td><input type="submit" name="BotonFicha" value="Fichar"></td></tr></table>
Que como podéis observar muestra el día de la semana (por el array), mes por array tb, año y hora. Tenemos un formulario con unos botones de entrada o salida que lo envia a confirm.php que nos confirmará. Esta página es:

confirm.php

Cita:
<?php $ftiempo = time ();
$hora = date ('G:i:s');

$fecha = date ("j/n/Y");


$ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];

include("conectarbbdd.php");

$user = $_SESSION['login'];
$entra_sale = $_POST['ensa'];

$ins = "INSERT INTO fichaje (id,user,fecha,hora,IP,entrada_salida) VALUES (null,'$user','$fecha','$hora','$ip','$entra_sale' )";
$res = mysql_query($ins,$bbdd) or die(mysql_error());
if ($res) {

echo $user;
echo ' acabas de fichar la ';
echo $entra_sale;
echo ' a las ';
echo $hora;
echo ' del dia ';
echo $fecha;
echo '<br><br> Muchas Gracias.'; }
else
{ echo 'no se ha fichado, consulte con su administrador'; }

mysql_close();

?></p>
<br />
Como habéis observado en la base de datos guardo el usuario, fecha, hora, ip, entrada o salida.

Ahora tengo que implementar algo para que me diga según el dia de la semana en que estemos las horas acumuladas. Si por ejemplo es miercoles que me diga las horas acumuladas hasta hoy, comprobando la entrada y salida de los dias anteriores y sumando las horas. Para los dias de la semana lo tngo en ficha.php que es date('w') pero no en la base de datos.

Haber si alguien puede darme alguna idea!!

Lo peor de esta aplicación es que se utilizará en un futuro para que nos controlen el horario de los becarios, es decir, la estoy haciendo yo para que me controlen y a mis compañeros. Pero me lo han mandado y es lo que tengo que hacer...

Haber si me dais al menos una pequeña idea de como implementarlo.
  #2 (permalink)  
Antiguo 12/06/2008, 09:29
Avatar de KarQ  
Fecha de Ingreso: septiembre-2005
Mensajes: 88
Antigüedad: 18 años, 7 meses
Puntos: 1
Respuesta: Acumulador horas semana!!

A ver, no te voy a escribir codigo pq tu ya sabrás como hacerlo, si quieres calcular el número de horas haz lo siguiente:

El problema es que según tu código guardas las fechas y las horas en formato fecha y hora y esto te supondrá algunas complicaciones innecesarias para esto lo mejor es guardar la fecha/hora de entrada y salida como timestamp ya que es un numero entero y puedes sumar y restar fácilmente

Haz un select en la BD de el usuario que quieras ver sus horas y obtendrás todos los registros de ese user, luego restas la hora de salida con la de entrada en cada registro para calcular el tiempo en cada jornada y así obtendrás las horas en cada día.

Luego sumas todo y se supone que ya está no? igual te he entendido mal pero si no es así tambien deberías comprobar si el usuario está trabajando en este momento (no tendrá hora de salida en un registro) y restar la hora actual (funcion time()) con la hora de entrada. Sumas todo y ya lo tienes ;)

Espero que te haya servido
__________________
KarQ - xC
mi weblog en: http://www.monochromatic.es
  #3 (permalink)  
Antiguo 13/06/2008, 02:30
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Acumulador horas semana!!

Lo que quiero es acumular la hora de la semana que lleva trabajadas, mejorado sería incluso contando la del propio día sin fichar la salida, el problema es que con date('w') muestra en el dia de la semana que estamos, hoy viernes resultaría como 5. Pero no se ha guardado en la base de datos y no sé como contar esas horas de esa semana.

Haber si me podéis ayudar, no hace falta que me pongáis código si no es identificativo, tampoco quiero eso, sino una idea.

Un saludo, gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:51.