PHP - obtener los dias entre dos fechas

 
Vista:
Imágen de perfil de lluis

obtener los dias entre dos fechas

Publicado por lluis (68 intervenciones) el 25/05/2012 16:12:02
tengo problemas con un codigo que no consigo resolver
tengo un formulario php con 2 campos de fecha y quiero grabar en mysql tantos registros como dias haya entre la primera fecha y la ultima, y no funciona bien cuando son de meses distintos

$DIANUEVO=$_POST['PRIMERO'];
list($dia,$mes,$ano)=split('[/.-]',$DIANUEVO);
$diasql=$ano."-".$mes."-".$dia;

do {

......grabar $diasql

$DIANUEVO=date("d/m/y",strtotime($ano."-".$mes."-".$dia)+60*60*24);
list($dia,$mes,$ano)=split('[/.-]',$DIANUEVO);
$diasql=$ano."-".$mes."-".$dia;

} while ($DIANUEVO<=$_POST['ULTIMO']);




please help !!!!
gracias
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

obtener los dias entre dos fechas

Publicado por Alexis (92 intervenciones) el 26/05/2012 04:21:23
Que versión de PHP estás usando? Porque en la versión 5.3 la función split() está desaconsejada. PHP mismo remienda el uso de la función explode().

http://www.php.net/manual/es/function.explode.php

Ahora bien, suponiendo que estés utilizando esta función (Que en esencia es lo mismo), podrías resumir las 3 primeras líneas de código así

1
$diasql = date('Y/m/d' , strtotime($_POST['PRIMERO']));


Ya con esto, tienes en la variable $diasql la fecha en el formato de mysql.

Ahora para incrementar en un día, puedes hacer

1
$diasql  = date('Y/m/d' , strtotime($diasql .'+1 day'));


En resumen, podría quedarte algo así

1
2
3
4
5
6
$diasql = date('Y/m/d' , strtotime($_POST['PRIMERO']));
 
while($diasql <= $_POST['ULTIMO']){
    //Sentencia(s) SQL
    $diasql  = date('Y/m/d' , strtotime($diasql.'+1 day'));
}


Al utilizar esto, PHP sabrá cuando debe incrementar días, meses y/o años. Así que podrás olvidarte de ese problemita que tenías.

Espero haberte ayudado con esto
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