PHP - Calcular entre 2 fechas con un formulario

   
Vista:

Calcular entre 2 fechas con un formulario

Publicado por Cachi (33 intervenciones) el 31/10/2015 21:02:17
Hola !

Sigo avanzando en mi aprendizaje, no muy velozmente cómo quisiera pero sí firme !

Estoy tratando de armar un formulario que reciba una determinada fecha, y luego devuelva cuantos días faltan entre la fecha indicada y la actual, separando todo en 2 archivos.
Recibo este error: Fatal error: Unsupported operand types in pagina2.php on line 11

¿ Alguien podrá echarme una manito por favor ?
Gracias !

Estos son mis 2 archivos

pagina1.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
echo "<Head>";
echo "<Title>pagina1</Title>";
echo "</Head>";
echo "<Body>";
echo "<form action=\"pagina2.php\" method=\"POST\">";
echo "<p><b>Por favor ingrese una fecha en el formato día, mes y año, y le indicaremos cuantos días faltan para esa fecha: </b></p>";
echo "<input name=\"dia\" type=\"number\" min=\"1\" max=\"31\" />";
       echo " <input name=\"mes\" type=\"number\" min=\"1\" max=\"12\" />";
       echo " <input name=\"anio\" type=\"number\" min=\"1\" max=\"5000\" />";
       echo " <input name=\"submit\" type=\"submit\" class=\"texto\" value=\"Calcular\" />";
echo "</form>";
echo "</Body>";
?>

pagina2.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
echo "<Head>";
echo "<Title>Pagina2</Title>";
echo "</Head>";
echo "<Body>";
$dia=$_POST["day"];
$mes=$_POST["month"];
$anio=$_POST["year"];
$fecharecibida = "$anio/$mes/$dia";
$fechaactual = localtime(time());
$segundos = $fecharecibida - $fechaactual; //Son el numero de segundos que hay entre las dos fechas
$dias = $segundos/(3600*24); //Lo divido por los segundos que tiene una hora, por las 24 horas del dia
//$dias = round($dias); //La division puede no ser exacta, redondeo.
echo "Faltan ".$dias." dias";
?>
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
Imágen de perfil de xve

Calcular entre 2 fechas con un formulario

Publicado por xve (5516 intervenciones) el 01/11/2015 10:44:21
Hola Cachi, para restar dos fechas, lo mejor que puedes hacer es pasar el valor a timestamp, realizar la resta, y volver a pasar el valor a fecha...

Te he preparado un ejemplo haber si te sirve: http://www.lawebdelprogramador.com/codigo/PHP/3327-Restar-dos-fechas-en-PHP.html

Coméntanos, ok?
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

Calcular entre 2 fechas con un formulario

Publicado por Cachi (33 intervenciones) el 01/11/2015 17:20:56
Hola,

Te agradezco mucho XVE.
Hice la prueba pero intentando adaptarla a mi ejemplo, tratando de pasar una fecha desde un formulario y usando tu solución. Le pongo una fecha que será dentro de 2 días y me da el siguiente resultado que es por supuesto erroneo:

Diferencia entre la fecha $_POST["anio"]-$_POST["mes"]-$_POST["dia"] la fecha 2015-11-01
Años 45
Meses 10
Días 15


Eso seguramente se debe a que no me está tomando la fecha que le envío vía el formulario... ¿cómo puedo hacer para que la tome ?

Te muestro cómo me quedaron mis 2 archivos ahora con tu ayuda:

ARCHIVO 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
echo "<Head>";
echo "<Title>pagina1</Title>";
echo "</Head>";
echo "<Body>";
echo "<form action=\"pagina2.php\" method=\"POST\">";
echo "<p><b>Por favor ingrese una fecha en el formato día, mes y año, y le indicaremos cuantos días faltan para esa fecha: </b></p>";
echo "<input name=\"dia\" type=\"number\" min=\"1\" max=\"31\" />";
       echo " <input name=\"mes\" type=\"number\" min=\"1\" max=\"12\" />";
       echo " <input name=\"anio\" type=\"number\" min=\"1\" max=\"5000\" />";
       echo " <input name=\"submit\" type=\"submit\" class=\"texto\" value=\"Calcular\" />";
echo "</form>";
echo "</Body>";
?>

ARCHIVO 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
echo "<Head>";
echo "<Title>Resultado</Title>";
echo "</Head>";
echo "<Body>";
$fechaInicial = '$_POST["anio"]-$_POST["mes"]-$_POST["dia"]';
$fechaActual = date('Y-m-d'); // la fecha del ordenador
 
echo "<p>Diferencia entre la fecha ".$fechaInicial." la fecha ".$fechaActual."</p>";
 
// Obtenemos la diferencia en milisegundos
$diff = abs(strtotime($fechaActual) - strtotime($fechaInicial));
 
echo "</br> Años ";
echo $years = floor($diff / (365*60*60*24));
echo "</br> Meses ";
echo $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
echo "</br> Días ";
echo $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
echo "</br>";
?>
error-ejemplo
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
Imágen de perfil de xve

Calcular entre 2 fechas con un formulario

Publicado por xve (5516 intervenciones) el 01/11/2015 19:55:20
Hola Cachi, creo que esta linea esta mal...
1
$fechaInicial = '$_POST["anio"]-$_POST["mes"]-$_POST["dia"]';
Tendria que ser algo así:
1
$fechaInicial = $_POST["anio"]."-".$_POST["mes"]."-".$_POST["dia"];

Coméntanos si es este el problema, ok?
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

Calcular entre 2 fechas con un formulario

Publicado por Cachi (33 intervenciones) el 01/11/2015 20:09:08
Exactamente ese era el problema, ya funcionó ! :)

Muchas gracias XVE !!!, gracias por tu tiempo.
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