Foros del Web » Programando para Internet » PHP »

Conteo de horas muertas

Estas en el tema de Conteo de horas muertas en el foro de PHP en Foros del Web. Hola a todos, tengo una tabla con la siguiente información id---usuario-------fecha------hora 1----000001--19/12/2019---08:00 2----000001--19/12/2019---08:30 3----000001--19/12/2019---09:00 4----000001--19/12/2019---12:00 5----000001--19/12/2019---12:30 6----000001--19/12/2019---16:00 Necesito sacar el total de tiempo "muerto" de ...
  #1 (permalink)  
Antiguo 18/12/2019, 23:59
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 6 meses
Puntos: 10
Conteo de horas muertas

Hola a todos, tengo una tabla con la siguiente información

id---usuario-------fecha------hora
1----000001--19/12/2019---08:00
2----000001--19/12/2019---08:30
3----000001--19/12/2019---09:00
4----000001--19/12/2019---12:00
5----000001--19/12/2019---12:30
6----000001--19/12/2019---16:00


Necesito sacar el total de tiempo "muerto" de ese usuario en ese día, es decir el entro a las 8 y salio a las 16 el total de tiempo son 8 horas, pero al ver todos los registros (2,3,4,5) nos damos cuenta de que hay salidas a las:
08:30 - 09:00 (media hora afuera)
12:00 - 12:30 (media hora mas afuera)

esto sería de las 8 horas paso 1 afuera... obviamente pueden salir n veces en el día.... estoy pensando en no tomar el primer y ultimo registro (ya que es la fecha de inicio y la fecha final, pero no se me ocurre como podría agrupar los demás registros para sacar el total del tiempo muerto... a alguien se le ocurre algo, como siempre gracias
  #2 (permalink)  
Antiguo 19/12/2019, 09:01
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.994
Antigüedad: 11 años, 5 meses
Puntos: 2194
Respuesta: Conteo de horas muertas

Toma el horario inicial y final, en total son 8 horas, luego comienza a restar las horas en que salieron, creo que es la forma más fácil.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 19/12/2019, 22:22
 
Fecha de Ingreso: abril-2006
Mensajes: 336
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: Conteo de horas muertas

en la tabla ay un campo que indique que una HORA es de Ingreso y otra de Salida??? de lo contrario seria que saques Pares, y solo hagas restas saltando 2 registros en 2 registros para obtener la resta de horas
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #4 (permalink)  
Antiguo 21/12/2019, 16:12
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 6 meses
Puntos: 10
Respuesta: Conteo de horas muertas

Gracias a los dos, solo hay un campo para los hora
hice la siguiente consulta
Código PHP:
$query_horario= sprintf("SELECT * FROM registro WHERE fecha='$fechaactual'");
$horario= mysqli_query($connection ,$query_horario) or die(mysqli_error());
$row_horario = mysqli_fetch_assoc($horario);
$totalR = mysqli_num_rows($horario);  

<?php do { ?>
 <td > <?php echo $row_horario['usuario']; </td>
<
td > <?php echo $row_horario['hora']; </td>
    <?
php } while ($row_alumnosmysqli_fetch_assoc($horario)); ?>
Tengo el listado de empleados con todos los registros, pero aún no se me ocurre como separar los registros para la resta de las horas
  #5 (permalink)  
Antiguo 21/12/2019, 16:39
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 6 meses
Puntos: 10
Respuesta: Conteo de horas muertas

Con esta consulta saco los id pares


SELECT * FROM `registro` WHERE mod(id,2) = 0

Con esta los impares

SELECT * FROM `registro` WHERE mod(id,2) <> 0


Ahora no se me ocurre como podría hacer mis operaciones
  #6 (permalink)  
Antiguo 21/12/2019, 16:46
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 6 meses
Puntos: 10
Respuesta: Conteo de horas muertas

Mi idea es la siguiente tomar el registro minino (esa sería mi hora de entrada), sacar el máximo (hora final (salida))

Y debería tomar el primer par con el primer impar , el segundo par con el segundo impar... etc de esta manera sacaría mis horas muertas...
pero no se me ocurre como alternar el 1 par con el 1 impar, el 2 par con el 2 impar, etc
  #7 (permalink)  
Antiguo 21/12/2019, 22:14
 
Fecha de Ingreso: abril-2006
Mensajes: 336
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: Conteo de horas muertas

creo que lo primero deberia ser que obtengas todas las Horas del DIa de 1 Usuario y ver si es un numero Par o Impar, si es PAR es que entro y salio si es impar, puede que no haya salido, se olvido marcar, murio dentro ,etc..etc...

suponiendo que el sistema valido correctamente un usuario en 1 dia deberia de tener numeros pares en el registro de horas. bueno eso ya lo veras luego, pero suponiendo ello de un empleado comun y correctamente haga sus salidas e ingresos
seri asi

haces la consulta MYSQL, filtrando por Usuario y el DIA, y este dato deberia retornar el DIA, y te deberia retornar un array variable Pero PAR, ya que una persoa podria entrar y salir unas 20 veces, buenos suponiendo de un Empleado que INgreso, en la mañana, luego salio a almorzar, luego regreso, y luego se fue a su casa

Código PHP:
<?php
$array_mysql 
= array(
    [
'id'=>1,'hora'=>'2019-05-21T08:00:00'],
    [
'id'=>1,'hora'=>'2019-05-21T12:00:00'],
    [
'id'=>1,'hora'=>'2019-05-21T14:00:00'],
    [
'id'=>1,'hora'=>'2019-05-21T20:00:00'],
);

echo 
"<pre>";

for(
$i=0;$i<count($array_mysql);$i=$i+2){
    
var_dump('Hora Entrada ' $array_mysql[$i]['hora'
             . 
' Y salio a las ' $array_mysql[$i+1]['hora']  );
}
bueno el uso del FOR es importante que sepas que puede aceptar expresiones distintas,

y solo para que sepas por que de esto no sabia que se podia despues de 7 años de programación un for puede tener esta expresion

Código PHP:
for($i=0,$a=2,$b=4;$i==OR $i<10;$i++,$a=$a*2){
var_dump($a);

__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #8 (permalink)  
Antiguo 22/12/2019, 00:14
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 6 meses
Puntos: 10
Respuesta: Conteo de horas muertas

Gracias por tu tiempo :)

$array_mysql = array($row_horario
);

echo "<pre>";

for($i=0;$i<count($array_mysql);$i=$i+2){
var_dump('Hora Entrada ' . $array_mysql[$i]['hora']
. ' Y salio a las ' . $array_mysql[$i+1]['hora'] );
}


Pero solo me da una hora
  #9 (permalink)  
Antiguo 26/12/2019, 16:05
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.994
Antigüedad: 11 años, 5 meses
Puntos: 2194
Respuesta: Conteo de horas muertas

Carga todas las horas en un array, no puedes ir leyendo los resultados de la consulta:

Código PHP:
Ver original
  1. <?php
  2. $query_horario= sprintf("SELECT * FROM registro WHERE fecha='$fechaactual'");
  3. $horario= mysqli_query($connection ,$query_horario) or die(mysqli_error());
  4. $array_mysql = [];
  5. while($row_horario = mysqli_fetch_assoc($horario)) {
  6.     $array_mysql[] = $row_horario;
  7. }
  8.  
  9. // Ahora sí pones aquí el for

$array_mysql = []; , a partir de PHP 5.4, es lo mismo que $array_mysql = array();
__________________
- León, Guanajuato
- GV-Foto



La zona horaria es GMT -6. Ahora son las 07:39.