Foros del Web » Programando para Internet » PHP »

Contabilizar horas en bbdd

Estas en el tema de Contabilizar horas en bbdd en el foro de PHP en Foros del Web. Hola, tengo una base de datos que se llama "Fichaje" y cuyos atributos son "user,fecha,hora,entrada_salida". Un ejemplo podría ser: USER FECHA HORA ENTRADA_SALIDA alfredo 20/6/2008 ...
  #1 (permalink)  
Antiguo 27/06/2008, 03:08
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Contabilizar horas en bbdd

Hola, tengo una base de datos que se llama "Fichaje" y cuyos atributos son "user,fecha,hora,entrada_salida". Un ejemplo podría ser:

USER FECHA HORA ENTRADA_SALIDA
alfredo 20/6/2008 9:00:52 entrada
alfredo 20/6/2008 14:00:00 salida
alfredo 23/6/2008 9:01:00 entrada
alfredo 23/6/2008 14:05:05 salida
alfredo 24/6/2008 8:59:02 entrada
alfredo 24/6/2008 13:59:00 salida

Tengo que contabilizar la hora de la semana en que estamos, es decir, esta semana me tendría que devolver 10:04:03 horas, ya que la fecha del 20/6/2008 no debería contarla porque no es de esta semana. Además me tiene que sumar a las horas de la semana las horas que llevo a día de hoy.

No sé que funciones existen o cómo hacerlo según los formatos que tengo de Fecha: dd/m/aaaa y Hora: h:mm:ss.

Me imagino que habrá que ir restando la hora de salida - hora entrada del mismo dia, pero para ello necesito una función que me lo pase a integer y creo que habrá que hacer varios "Select".

Espero que me podáis dar unas pequeñas ideas para comenzar.

Gracias.
  #2 (permalink)  
Antiguo 27/06/2008, 04:00
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Contabilizar horas en bbdd

Me imagino que alguien ya habrá implementado algo parecido, me podrían ayudar??
Lo tengo que entregar para el lunes con el proyecto jeje.

Gracias.
  #3 (permalink)  
Antiguo 27/06/2008, 04:43
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Contabilizar horas en bbdd

He sacado la función para restar horas (funciona perfectamente):
Cita:
<?php
function dif($h1,$h2){
$h=((strtotime($h1)-strtotime($h2)))/3600;
$m=intval((($h)-intval($h))*60);
$s=intval((((($h)-intval($h))*60)-$m)*60);
return (intval($h)<>10?'0'.intval($h):intval($h)).':'.($m <>10?'0'.$m:$m).':'.($s<>10?'0'.$s:$s);
}

?>
Ahora ya sólo me queda cómo sacar los días de la semana y cómo sacar la hora entrada y la hora de salida para restarlas; tendré también que usar un contador para sumar todas las horas, incluidas en la fecha actual.

Por favor, si sabéis cómo sacarlo agradecería que me ayudárais.

gracias.
  #4 (permalink)  
Antiguo 30/06/2008, 01:49
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Contabilizar horas en bbdd

Seguro que alguien habrá hecho algo parecido como contabilizar horas del mes para una aplicación parecida.

Si alguien me pudiera ayudar o darme al menos una pequeña idea lo agradecería.

Muchas gracias.
  #5 (permalink)  
Antiguo 30/06/2008, 04:03
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Pregunta Respuesta: Contabilizar horas en bbdd

He encontrado la siguiente función que me devuelve el número de la semana en que estamos actualmente: date ("w", $fecha); //hoy devuelve 4

Ahora sería una búsqueda en la base de datos donde me devuelva las fechas coincidentes a esta, habría que sacar todas las fechas de la base de datos que contengan este valor y luego me imagino que habría que ver la diferencia de la hora de salida y la de entrada de cada día.

Pero esto no lo sé hacer, me podríais ayudar?????????'
  #6 (permalink)  
Antiguo 30/06/2008, 04:22
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Contabilizar horas en bbdd

Hasta el momento llevo el siguiente código:

Cita:
$bbdd = mysql_connect($host, $usuario, $password) or die ("Could not connect: " . mysql_error()); //conectamos con base de datos.
$tablausuario = mysql_select_db($bd, $bbdd) or die(mysql_error());//seleccionamos base de datos fichaje de nuestra base de datos.
if (bbdd) {
$ftiempo = time ();
$hora_actual = date ('G:i:s');
$fecha = date ("j/n/Y");
$query = 'SELECT hora,fecha,entrada_salida FROM fichaje WHERE user="'.$_SESSION[login].'" ';
echo $query;
$resphora = mysql_query($query, $bbdd) or die(mysql_error());; //ejecutamos la consulta.
$rows = mysql_num_rows($resphora);
$num_semana = date ( "w" , $fecha); //devuelve el número de la semana en que estamos.
while ($filas = mysql_fetch_array ($resphora)); //array con el total filas encontradas y almacenadas de la consulta.
{
$fechas = $filas["fecha"]; //guardo la fecha.
$horas = $filas["horas"]; //guardo las horas
$entradas_salidas = $filas["entrada_salida"];//guardo las entradas y salidas.

$semana = date ("w",$fechas); //numero de la semana de cada fecha.
if ( $num_semana == $semana )
{ $cont = 0;

}
Cómo continuo????
  #7 (permalink)  
Antiguo 30/06/2008, 05:10
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Contabilizar horas en bbdd

Se facilitaría si directamente se hiciera una consulta en mysql que me devolviera ya directamente las fechas de la semana en que estamos????

Si fuera así...cómo se haría??

Estoy perdido, haber si me pueden ayudar.
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 14:38.