Foros del Web » Programando para Internet » PHP »

Sumar campos time con php

Estas en el tema de Sumar campos time con php en el foro de PHP en Foros del Web. Buenas tardes. Les cuento de mi problema: Tengo el archivo1.php que pide la hora en la que inicia una clase y la hora en la ...
  #1 (permalink)  
Antiguo 20/01/2014, 14:14
Avatar de javier0730  
Fecha de Ingreso: enero-2010
Ubicación: Jalisco
Mensajes: 82
Antigüedad: 14 años, 4 meses
Puntos: 8
Sumar campos time con php

Buenas tardes.

Les cuento de mi problema:
Tengo el archivo1.php que pide la hora en la que inicia una clase y la hora en la que termina.

Después envio estos valores al archivo2.php el cual los recupera por POST y los guarda en variables.

Ahora deseo que se realice el calculo de cuantas horas al día se imparte esa materia pero el problema es que el PHP me calcula solo horas exactas y no me suma los minutos.

Por ejemplo si la hora de inicio es a las 8:00 AM y la hora de fin es a las 10:30 el calculo me dice que son 2 horas y no 2:30 como debe ser.

La formula que utilizo es esta:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $hora_inicio = $_POST["hora_inicio"];
  4. $hora_fin = $_POST["hora_fin"];
  5.  
  6. echo $hora_fin - $hora_inicio;
  7. ?>

Este método lo debo aplicar para cada dia de la semana, lo cual se como hacer pero el problema es que se me pierden los minutos cuando no son horas exactas.

Incluso intente convirtiendo el contenido de estas variebles a minutos pero igualmente se calcula sólo el correspondiente a la hora y los minutos se pierden, por ejemplo si convierto 8:00 a minutos me dice que son 480 minutos pero si convierto 8:30 también me dice que son 480 minutos.


Espero que alguien me pueda ayudar.
Gracias.

Última edición por javier0730; 20/01/2014 a las 14:20
  #2 (permalink)  
Antiguo 21/01/2014, 13:00
Avatar de javier0730  
Fecha de Ingreso: enero-2010
Ubicación: Jalisco
Mensajes: 82
Antigüedad: 14 años, 4 meses
Puntos: 8
Respuesta: Sumar campos time con php

Buenas tardes.

Encontre un código que puede serme de utilidad pero no puedo hacer que me funcione con PHP.

Consiste en almacenar en una tabla de MySQL los registros de las materias con sus respectivos horarios de inicio y fin para cada dia de la semana. Posteriormente hacer el calculo de las horas desde PHP y que actualice la tabla de de base de datos.

Este es el código:
Código SQL:
Ver original
  1. SELECT SEC_TO_TIME(SUM(time_to_sec(lunes_t-lunes_i))) AS horas,lunes_t,lunes_i FROM materias WHERE materia = "Matematicas";

La tabla se llama materias y contiene los campos siguientes:
id_materia
nombre
lunes_i = almacena la hora en la que inicia la clase los lunes
lunes_t = almacena la hora en la que termina la clase los lunes
... aqui el resto de las variables para los demas días.
total_horas = almacenará el total de horas de cada día

Si ejecuto esto directamente como una consulta SQL a la base de datos funciona perfectamente. Pero no puedo hacer que me funcione desde el PHP, estoy intentando con esto:

Código PHP:
Ver original
  1. include("conexion.php");
  2. $c_mat = mysql_query("SELECT SEC_TO_TIME(sum(time_to_sec(lunes_t-lunes_i))) as hora,lunes_t,lunes_i from materias WHERE id_materia = '$idmateria'", $link);
  3. $r_mat = mysql_fetch_array($c_mat);

En la consulta SQL pueden ver que estoy aplicandolo a la materia Matemáticas porque es una busqueda directa en la base de datos pero en el PHP yo estoy almacenando en una variable el Id de la maeria, lo que en teoría esta bien porque si doy una impresión de la variable $idmateria si tiene el dato correspondiente.

Ahora bien, se supone que se esta guardando el resultado de la consulta en la variable hora pero si la imprimo con un echo veo que no tiene nada.

Alguén sabe en que me estoy equivocando para almacenar en una variable lo que genera la consulta.

Espero alguna ayuda.
Gracias.

Etiquetas: campos, time, variable
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 13:15.