PHP - Avances Autosuma

   
Vista:

Avances Autosuma

Publicado por Brayan (76 intervenciones) el 08/02/2017 15:49:35
Buenas tardes quiero decirles que he logrado un buen avance con lo que es la autosuma de las horas de determinadas fechas pero hay un error que no logro corregir y es que apesar de que si suma automaticamente los valores estan errados pongo el codigo aqui:


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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$contador= count($entradaxdia[0]); //En este linea me arroja el valor de los arrays contenido 4
foreach($entradaxdia[0] as $entradaxdia[0]){//entrada[0] tiene los siguientes valores
//01/ 11/ 2016 07:22:12
//01/ 11/ 2016 10:07:51 
//01/ 11/ 2016 10:09:30 
//01/ 11/ 2016 12:20:20 
 
    for($i=0;$i<$contador;$i++){
    $hora[$i]=explode(":",date("H:i:s",strtotime($entradaxdia[0]['fecha'])));
    $temp=0;
 
    //sumo segundos 
    $segundos+=(int)$hora[$i][2];
    while($segundos>=60){
        $segundos=$segundos-60;
        $temp++;
    }
    //sumo minutos
    $minutos+=(int)$hora[$i][1]+$temp;
    while($minutos>=60){
        $minutos=$minutos-60;
        $temp++;
    }
    //sumo horas
    $horas+=(int)$hora[$i][0]+$temp;
}
    if($horas<10)
        $horas= '0'.$horas;
 
    if($minutos<10)
        $minutos= '0'.$minutos;
 
    if($segundos<10)
        $segundos= '0'.$segundos;
 
    $sum_hrs = $horas.' Horas '.$minutos.' Minutos '.$segundos.' Segundos';
 
};
   echo $sum_hrs;
 
//aqui es donde esta el error pues deberia darme 39:59:53 o como lo tengo en la ultima linea 39 Horas 59 Minutos 53 Segundos
 
//Pero en vez de eso me sale 166 Horas 59 Minutos 32 Segundos o lo que es igual a 166:59:32

Si alguien sabe porque el error se lo agradeceria, por cierto si yo hago esto en el codigo:

1
2
3
4
5
6
7
    //sumo horas
    $horas+=(int)$hora[$i][0]+$temp;
        while($horas>=60){
        $horas=$horas-60;
        $temp++;
        } //me proporciona esta hora 46 Horas 59 Minutos 32 Segundos la cual tambien es erronea
//cabe acotar que las horas no deberian llevar eso porq la idea es que sume las horas asi hayan 125 horas y no se resetee

Por favor ayuda X(
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

Avances Autosuma

Publicado por Brayan (76 intervenciones) el 08/02/2017 16:25:32
Ok, ya lo solucione, el problema estaba en la consulta al mysql, que le indique me trajera todo lo de la tabla, cambie eso y le pedi la fecha nada mas; y en el valor de fecha utilice el autoincremento y ahora si funciona. dejo el codigo:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$contador= count($entradaxdia[0]);
foreach($entradaxdia[0] as $entradaxdia[0]){
    // echo date("d/ m/ Y H:i:s",strtotime($entradaxdia[0]['fecha']))," Entadas <br>"; 
    for($i=0;$i<$contador;$i++){
    $hora[$i]=explode(":",date("H:i:s",strtotime($entradaxdia[0][$i])));
    $temp=0;
 
                //sumo segundos 
                $segundos+=(int)$hora[$i][2];
                while($segundos>=60){
                $segundos=$segundos-60;
                $temp++;
                }
 
                //sumo minutos 
                $minutos+=(int)$hora[$i][1]+$temp;
                $temp=0;
                while($minutos>=60){
                    $minutos=$minutos-60;
                    $temp++;
                }
 
                //sumo horas 
                $horas+=(int)$hora[$i][0]+$temp;
 
}
    if($horas<10)
        $horas= '0'.$horas;
 
    if($minutos<10)
        $minutos= '0'.$minutos;
 
    if($segundos<10)
        $segundos= '0'.$segundos;
 
    $sum_hrs = $horas.' Horas '.$minutos.' Minutos '.$segundos.' Segundos';
 
};
   echo $sum_hrs;

Para los que trabajan poco con muchos ciclos como yo, cuando hagan un recorrido, si necesitan mostrar los datos varias veces van a tener que realizar nuevamente la consulta, o dentro del ciclo de recorrido mostrar el o los datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar