PHP - Calcular horas extras total agrupado

 
Vista:
Imágen de perfil de Eduardo
Val: 165
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Calcular horas extras total agrupado

Publicado por Eduardo (175 intervenciones) el 25/11/2022 21:23:10
Hola a todos.. espero esten todos bien.. tengo estos datos en la base de datos


tabla


y hago la siguiente consulta para agrupar asi a los Trabajadores

1
$query4ex = "select *  from horaextra WHERE fechaextra BETWEEN '".$fecha1w."' AND '".$fecha2w."' AND restahoras >'09:25' AND municipioextra='".$municipiow."' GROUP BY operariohoraextra DESC";

como hago para que ,me muestre el calculo general de el total de las horas extras (sume todos los campos del total)

he usado COUNT(horaextra) AS 'horaextra'

como hago ese conteo.. Mil graciasss
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Eduardo
Val: 165
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Calcular horas extras total agrupado

Publicado por Eduardo (175 intervenciones) el 25/11/2022 22:36:58
Bueno yo no se si sea poco etico hacer loq ue hice pero hasta le momento me funciona solo falta es que me sume las horas totales pue sme muestra es el listado

lo que hice fue hacer un buble while dentro de otro... me funciona

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$query4ex = "select * FROM horaextra WHERE fechaextra BETWEEN '".$fecha1w."' AND '".$fecha2w."' AND restahoras >'09:25' AND municipioextra='".$municipiow."' GROUP BY operariohoraextra DESC";
  $result4ex = mysql_query($query4ex);
  $numero4ex = 0;
  $iex=1;
  while($row = mysql_fetch_array($result4ex))
{
   	echo "<tr><td width=\"400\"><font face=\"verdana\">" . str_replace("?","&Ntilde;", utf8_decode(strtoupper ($row["operariohoraextra"]))) . "</font></td>";
	//echo "<td width=\"40\"><center><font face=\"verdana\">".$conteo."</font></center></td>";
	echo "<td>";
   $queryadicional2w = mysql_query("SELECT restahoras FROM horaextra WHERE fechaextra BETWEEN '".$fecha1w."' AND '".$fecha2w."' AND operariohoraextra = '".$row["operariohoraextra"]."'");
   	 while ($rowadicional2w=mysql_fetch_array($queryadicional2w))
    {
	echo $rowadicional2w["restahoras"];
	 }
echo "</td>";

lo que me faltaria es que en vez del listado de las horas (que me muestra me haga el calculo sumando todas y muestre el resultado)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Calcular horas extras total agrupado

Publicado por Kathyu (905 intervenciones) el 26/11/2022 11:42:20
Primero decirle que debe especificar mejor su duda para tener una mejor ayuda, de lo contrario nadie gastará su tiempo en ayudarle. Yo supongo que usted lo que quiere es el total de horas por empleado verdad?

Basándonos en esa premisa y tomando al trabajador 1 como ejemplo, yo haría lo siguiente. En vez de guardar en la DB las horas en ese formato (1:30 y 2:01) los guardaría en minutos (90 y 121) y luego al final cuando sume todos los minutos con una función básica de SQL pasaría esos minutos (211) a horas (2:31).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
	// 1:30 > 90
	function hoursToMinutes($hours)
	{
	    $minutes = 0;
	    if (strpos($hours, ':') !== false)
	    {
	        // Split hours and minutes.
	        list($hours, $minutes) = explode(':', $hours);
	    }
	    return $hours * 60 + $minutes;
	}
 
	echo hoursToMinutes('1:30').'<br>'; // 90
 
	// 90 > 1:30
	function minutesToHours($minutes)
	{
	    $hours = (int)($minutes / 60);
	    $minutes -= $hours * 60;
	    return sprintf("%d:%02.0f", $hours, $minutes);
	}
 
	echo minutesToHours('90'); // 1:30
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo
Val: 165
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Calcular horas extras total agrupado

Publicado por Eduardo (175 intervenciones) el 27/11/2022 00:18:50
Hola mil gracias por responder.. perfectamente es lo que necesito.. y lo siento a veces no se como explicarme bien... pero mil gracias por tu tiempo de leer y entenderme..

lo que me dices es que debo guardar en un campo las horas convertidas en minutos al momento de almacenar el valor...???

entiendo que es mas fácil sumar las horas convertidas a minutos para asi calcular todas y luego ese calculo convertirlo a horas.. es cierto?

la pregunta como lo hago en mi caso... por que a decir verdad no tengo ni idea!!!

como hago para trasformar las horas que se agregan a minutos pára asi almacenarlas en la tabla??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo
Val: 165
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Calcular horas extras total agrupado

Publicado por Eduardo (175 intervenciones) el 27/11/2022 02:52:38
bueno ya le puse los cambios mencionados ya me graba las horas en minutos ahora como hago para sumar esos minutos en el siclo while pues me los muestra todos por persona pero necesito ahora que haga el calculo.. ayudita plissss ya luego que haga el calculo le pongo la funcion para que convierta estos minutos a horas..

1
2
3
4
5
6
7
$queryadicional2w = mysql_query("SELECT minutosw FROM horaextra WHERE fechaextra BETWEEN '".$fecha1w."' AND '".$fecha2w."' AND operariohoraextra = '".$row["operariohoraextra"]."'");
   	 while ($rowadicional2w=mysql_fetch_array($queryadicional2w))
    {
	echo $rowadicional2w["minutosw"];
	//echo ", ";
	//echo "<br>";
	 }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo
Val: 165
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Calcular horas extras total agrupado

Publicado por Eduardo (175 intervenciones) el 27/11/2022 03:24:30
bueno ya lo logre en el while usando esto


1
2
3
4
5
6
$queryadicional2w = mysql_query("SELECT minutosw FROM horaextra WHERE fechaextra BETWEEN '".$fecha1w."' AND '".$fecha2w."' AND operariohoraextra = '".$row["operariohoraextra"]."'");
   	 while ($rowadicional2w=mysql_fetch_array($queryadicional2w))
    {
	$var += $rowadicional2w["minutosw"];
	 }
	 echo $var;;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Calcular horas extras total agrupado

Publicado por Kathyu (905 intervenciones) el 27/11/2022 11:18:14
Sigue teniendo cosas que mejorar.

- Cambie todo lo de mysql_ por mysqli porque mysql_ esta super obsoleto.
- En mi respuesta anterior cuando le dije sume todos los minutos con una función básica de SQL me refería a que simplificara su trabajo. Como? bueno, supongo que cada empleado debe tener un identificador único, entonces sumando los minutos en el propio SQL ya se ahorraría muchísimo código.

Considere ejecutar el siguiente fiddle
http://sqlfiddle.com/#!9/49926f/5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE IF NOT EXISTS `data` (
  `id` int(6) unsigned NOT NULL,
  `dni` int(6) unsigned NOT NULL,
  `nombre` varchar(50) NOT NULL,
  `total` int(5) NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `data` (`id`, `dni`,`nombre`,`total`) VALUES
  ('1', 99991,'Empleado1', 90),
  ('2', 99992,'Empleado2', 60),
  ('3', 99993,'Empleado3', 116),
  ('4', 99991,'Empleado1', 121),
  ('5', 99992,'Empleado2', 118),
  ('6', 99993,'Empleado3', 28);
 
SELECT id, dni, nombre, sum(total) as extra FROM data group by dni;

El resultado es:
id---dni------nombre--------extra
1---99991---Empleado1---211
2---99992---Empleado2---178
3---99993---Empleado3---144

Y luego cada suma de minutos los pasa a horas y listo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar