Foros del Web » Programando para Internet » PHP »

contador de dias habiles en php

Estas en el tema de contador de dias habiles en php en el foro de PHP en Foros del Web. hola amigos necesito una variable que me diga la cantidad de días hábiles que han transcurrido desde que se registró una solicitud hasta el día ...
  #1 (permalink)  
Antiguo 11/03/2012, 08:43
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 11 meses
Puntos: 2
contador de dias habiles en php

hola amigos necesito una variable que me diga la cantidad de días hábiles que han transcurrido desde que se registró una solicitud hasta el día de hoy. lo que hice fue crear una tabla llamada 'dias habiles' donde estan todos los dias habiles de este año, fueron 255 registros en total. Ahora, como la tabla donde tengo registradas las solicitudes es diferente,se llama 'radicacion' y esta tiene una variable de fecha de registro llamada 'fecha_rad_reg', lo que intento hacer es que esa variable valga igual a la otra variable de fecha de la tabla 'dias habiles' para que me empiece a contar los dias de esa tabla. Muestro el codigo:
Cita:
$sql="SELECT radicacion.cod_rad,radicacion.fecha_rad_reg,dias_h abiles.fecha_habiles

FROM radicacion,dias_habiles

WHERE radicacion.cod_rad=19
";
$result=mysql_query($sql,$link);
echo "<table border><tr><td>FECHA_RAD_</td><td>FECHA ACTUAL</td></tr>";
while($row=mysql_fetch_object($result)){
$fecha1=strtotime($row->fecha_rad_reg);
$fecha2=strtotime(date("Y-m-d"));
$diff = $fecha2 - $fecha1;
$dias = $diff/(60*60*24);
echo floor($dias);
echo "<tr><td>$row->fecha_rad_reg</td>

<td> </tr>";
}
echo "</table>";
?>
aqui me muestra la cantidad de dias transcurridos con la ayuda del datediff pero esta contando los dias calendario por queno se como hacer que la variable de la tabla de registros valga igual a la variable de las fechas de 'dias_habiles', ademas me lista los 255 registros de la tabla de dias_habiles no se por que.

Nota: he utilizado la funcion COUNT(*) y lo hace bien pero al consultar mas de una tabla me muestra error ya que tengo por obligacion que traer datos de otras tablas.

Agradezco su atencion y espero porfavor me puedan ayudar. Gracias
  #2 (permalink)  
Antiguo 11/03/2012, 13:13
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 8 meses
Puntos: 31
Respuesta: contador de dias habiles en php

no entendi nada ... pero veamos si tratas de decir lo que yo pienso ...

Cita:
necesito una variable que me diga la cantidad de días hábiles que han transcurrido desde que se registró una solicitud
Solucion usar datediff, fecha actual vs la fecha del registro, eso te dara la diferencia de dias

http://dev.mysql.com/doc/refman/5.5/...ction_datediff

Supongo que en php tmb debe exsitir, traelo en mysql como un campo mas

Código MySQL:
Ver original
  1. SELECT *, datediff(parametros) as diferencia_dias FROM mi tabla
  #3 (permalink)  
Antiguo 11/03/2012, 13:48
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 16 años, 8 meses
Puntos: 9
Respuesta: contador de dias habiles en php

La solución de HiToGoRoShi no te va a servir porque necesitás días hábiles.

Lo que tenés que hacer es contar en la tabla de días hábiles cuantos días hay entre la fecha de radicación y la fecha actual sería algo así:

Código MySQL:
Ver original
  1. SELECT DISTINCT(radicacion.cod_rad), radicacion.fecha_rad_reg, COUNT(*) AS dias_pasados FROM radicacion,dias_habiles WHERE radicacion.cod_rad=19 AND dias_habiles.fecha_habiles>=radicacion.fecha_rad_reg AND dias_habiles.fecha_habiles<'$hoy' GROUP BY radicacion.cod_rad

Donde $hoy es la fecha de hoy.

Y vas a obtener la cantidad de días en $row->dias_pasados
__________________
Saludos.

Gustavo
  #4 (permalink)  
Antiguo 11/03/2012, 21:26
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: contador de dias habiles en php

Hola Gustavo72 gracias por tu ayuda, es la mas cercana que he obtenido, pues hice lo que me dijiste y lo probe en el editor de texto, tambien por consola pero no me arroja ningun resultado.
Lo hice de esta manera:
Cita:
<?php
$sql="SELECT DISTINCT(radicacion.cod_rad), radicacion.fecha_rad_reg, COUNT(*) AS dias_pasados
FROM radicacion,dias_habiles
WHERE radicacion.cod_rad=19 AND dias_habiles.fecha_habiles>=radicacion.fecha_rad_r eg AND dias_habiles.fecha_habiles<'$hoy'
GROUP BY radicacion.cod_rad";
$result=mysql_query($sql,$link);
while($row=mysql_fetch_object($result)){
echo "$hoy[0]";
echo "$row->dias_pasados";
}

?>
Una pregunta, la parte donde dice 'COUNT(*) AS dias_pasados' se que el count es tambien un contador pero que quiere cecir AS y a que te refieres a la variable 'dias_pasados'?
Te agradezco tu respuesta.
  #5 (permalink)  
Antiguo 11/03/2012, 23:13
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 16 años, 8 meses
Puntos: 9
Respuesta: contador de dias habiles en php

1) Tenés que definir $hoy con la fecha actual. Si estás usando fechas en formato SQL sería algo así:

Código PHP:
Ver original
  1. $hoy="2012-03-12";
  2. ó
  3. $hoy=date("Y-m-d");
  4. ó
  5. $hoy=gmdate("Y-m-d", time()+3600*$huso); //(donde $huso es el huso horario por ejemplo: -6).

Esto tenés que hacerlo antes de $sql="...";

2)
Código PHP:
Ver original
  1. echo "$hoy[0]";
  2. echo "$row->dias_pasados";

Están mal. Poné así para visualizar los datos:

Código PHP:
Ver original
  1. echo $row->radicacion.cod_rad." - ".$row->dias_pasados."<br />\n";

La consulta tal como está devuelve los datos de la tabla "radicacion" con el campo "cod_rad=19" y tantos registros como días hábiles haya entre las fechas indicadas en el WHERE.
Luego, al utilizar DISTINCT y GROUP BY lo que hace, es mostrarte 1 registro por cada "cod_rad" distinto [en este caso es 1 solo (19)] luego con COUNT(*) te devuelve la cantidad de registros originales (es decir en este caso la cantidad de días).

Medio difícil de explicar, lo mejor es hacer pruebas para entenderlo.

Con respecto a "AS" es para usar un alias del nombre del campo, por ejemplo:

SELECT tabla.campo AS alias FROM tabla

Entonces, en vez de usar $row->campo usas $row->alias para obtener el valor del campo.

Un comentario más:

Si le sacás: "radicacion.cod_rad=19 AND " al SELECT vas a obtener el listado completo de todas las radicaciones con la cantidad de días de cada uno.

Suerte!
__________________
Saludos.

Gustavo

Etiquetas: contador, dias, habiles, registro, sql, tabla, variables
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 06:51.