JavaScript - Calculo de dias laborales y que un input tome un valor

 
Vista:
sin imagen de perfil

Calculo de dias laborales y que un input tome un valor

Publicado por Erasmo Camacho (5 intervenciones) el 30/10/2012 21:05:46
Saludos, más o menos tengo este formulario:
Código PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form id="form1" name="form1" method="post" action="">
  <label>Fecha Inicio
  <input type="text" name="FechaInicio" id="FechaInicio" />
  <br />
  Fecha Final  </label>
  <label>
  <input type="text" name="FechaFin" id="FechaFin" />
  <br />
  Dias Continuos
  <input type="text" name="DiasContinuos" id="DiasContinuos" />
  <br />
  Dias Habiles
  </label>
  <label>
  <input type="text" name="DiasHabiles" id="DiasHabiles" />
  </label>
  <p>
    <label>
    <input type="submit" name="enviar" id="enviar" value="Enviar" />
    </label>
  </p>
</form>


Asimismo la funcion de calcular dias laborales:
Código PHP:
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
<?php
function calculardias($fecha1, $fecha2){
$dato1 = explode("/", $fecha1);
$dato2 = explode("/", $fecha2);
//defino fecha 1  
$ano1 = $dato1[0];
$mes1 = $dato1[1];
$dia1 = $dato1[2];
 
//defino fecha 2  
$ano2 = $dato2[0];
$mes2 = $dato2[1];
$dia2 = $dato2[2];
 
//calculo timestam de las dos fechas  
$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);
/* echo ("$timestamp1"."<br>");  */
$timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2);
/* echo ("$timestamp2"."<br>"); */
$segundos_diferencia = $timestamp2 - $timestamp1; //resto a una fecha la otra */
/* echo ("$segundos_diferencia"."<br>"); */
$dias_diferencia = $segundos_diferencia / (60 * 60 * 24); //convierto segundos en días  
$dias_diferencia = round($dias_diferencia); //obtengo el valor absoulto de los días (quito el posible signo negativo)  
 
return $dias_diferencia;
}
?>


La cuestión:
Como realizo el llamado de la funcion para que el input "DiasContinuos" tome un valor de la funcion el cual seria "$dias_diferencia" . Gracias por vuestra ayuda
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

Calculo de dias laborales y que un input tome un valor

Publicado por Jose Manuel (15 intervenciones) el 31/10/2012 09:57:17
Hola:

Tal vez sea esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form id="form1" name="form1" method="post" action="">
  <label>Fecha Inicio
  <input type="text" name="FechaInicio" id="FechaInicio" />
  <br />
  Fecha Final  </label>
  <label>
  <input type="text" name="FechaFin" id="FechaFin" />
  <br />
  Dias Continuos
  <input type="text" name="DiasContinuos" id="DiasContinuos" value="<?php echo calculardias($fecha1, $fecha2);?>" />
  <br />
  Dias Habiles
  </label>
  <label>
  <input type="text" name="DiasHabiles" id="DiasHabiles" />
  </label>
  <p>
    <label>
    <input type="submit" name="enviar" id="enviar" value="Enviar" />
    </label>
  </p>
</form>


He puesto $fecha1 y $fecha2 como ejemplo, pero esta claro que tú pondrías ahí los valores que desearas. Si no es esto a lo que te referías pues ya sabes, aquí no es mal sitio para que te echemos una mano.

Saludos,

José Manuel
===============
http://www.orbisapientia.com
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
sin imagen de perfil

Calculo de dias laborales y que un input tome un valor

Publicado por Erasmo Camacho (5 intervenciones) el 31/10/2012 12:28:31
Saludos, veo el cambio en
1
<input type="text" name="DiasContinuos" id="DiasContinuos" value="<?php echo calculardias($fecha1, $fecha2);?>" />


Pero no veo declarado $fecha1, $fecha2, cuando los input que obtienen esos valores son:
1
<input type="text" name="FechaInicio" id="FechaInicio" />

y
1
<input type="text" name="FechaFin" id="FechaFin" />


En fin, como llevo los valores introducidos en los inputs anteriores a las variables $fecha1, $fecha2?
Gracias por el apoyo
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

Calculo de dias laborales y que un input tome un valor

Publicado por Jose Manuel (15 intervenciones) el 31/10/2012 12:45:58
Ok, ahora me voy aclarando más. Como te indiqué en el mensaje anterior los $fecha1 y $fecha2 que puse eran de ejemplo. Creo que ahora tengo totalmente claro lo que quieres hacer. Veamos.

Pretendes calcular el valor de un input, en base a una función en PHP que recibe parámetros a partir de otros inputs del mismo formulario. Creo que tienes dos opciones y las dos pasan por el uso de JavaScript.

Primero: los input FechaInicio y FechaFin deben contener un valor válido. Usando JavaScript debes controlar cuando cambia el contenido de estos archivos y validar ese contenido. Si son correctos, pasas al segundo paso.

Segundo: aquí tienes las dos opciones que te dije. Una vez que mediante JavaScript has tomado los valores de los input FechaInicio y FechaFin y han sido validados como correctos, envías el formulario, ahora la función calculardias puede tomar los dos valores. Vuelves a cargar el formulario donde ahora ya tienes un valor para el input DiasContinuos.

La otra opción de este segundo paso implica el uso de AJAX. Cuando tienes los valores de los input FechaInicio y FechaFin validados, haces una llamada mediante AJAX a un script php que tenga y ejecute la función calculardias que devolverá un resultado. Coges ese resultado y mediante JavaScript se lo asignas al input DiasContinuos.

En cualquier caso, lo primero es asegurarse de que los inputs FechaInicio y FechaFin tienen un valor correcto, mediante el uso de JavaScript.

Bueno, ya nos dirás como te va. Aquí seguimos. Saludos.

Jose Manuel
================
http://www.orbisapientia.com
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

Calculo de dias laborales y que un input tome un valor

Publicado por Felix (1 intervención) el 02/12/2016 19:17:00
Haciendo la misma pregunta llegue al siguiente resultado: con la diferencia de que falta por añadir los días festivos y resultado lo he conseguido a través de javascript. Los días festivos se podría implementar a través de una tabla de días festivos y una consulta php.


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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<!DOCTYPE html>
<html>
<head>
<script>
function myFunction() {
var fecha1=document.getElementById("c_fechainicio").value;
var diafecha1 = fecha1.slice(0,2);
var mesfecha1 = parseInt(fecha1.slice(3,5))-1;
var añofecha1 = fecha1.slice(6);
var fechaconversion1= new Date(añofecha1,mesfecha1,diafecha1);
var fecha2=document.getElementById("c_fechafin").value;
var diafecha2 = fecha2.slice(0,2);
var mesfecha2 = parseInt(fecha2.slice(3,5))-1;
var añofecha2 = fecha2.slice(6);
var fechaconversion2= new Date(añofecha2,mesfecha2,diafecha2);
var diferencia= fechaconversion2.getTime() - fechaconversion1.getTime();
var cantidaddias= Math.floor(diferencia/(1000*24*60*60))+1;
 
<!-- Cantidad de dias no labores(sábado y domingos)//-->
var fecha3 = fechaconversion1;
fecha3.setDate(fecha3.getDate()-1);
var nolaboral=0;
for(var i=0;i<cantidaddias;i++){
fecha3.setDate(fecha3.getDate() + 1);
var diasemana=fecha3.getDay();
 
if(diasemana==0 || diasemana==6 ){
nolaboral++;}
}
 
var cantidadlaborales=cantidaddias-nolaboral;
document.getElementById("c_resultado").value =cantidadlaborales;
 
 
}
</script>
</head>
<body>
 
<p>Presione el Boton para calcular el numero de días laborales que hay entre las dos fechas.</p>
<form>
<label>Primer dia</label>
<input type="text" name="c_fechainicio" id="c_fechainicio"><br /><br />
<label>Segundo día</label>
<input type="text" name="c_fechafin" id="c_fechafin">
<br />
<p>La cantidad de días laborales entre las fechas introducidas es de:</p>
<input type="text" name="c_resultado" id="c_resultado">
</form>
<p></p>
 
<p id="demo"></p>
<button onclick="myFunction()">Calcular</button>
 
 
 
 
</body>
</html>
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