no...ese sistema falla. si ponemos por ejemplo del 28/02/2009 al 04/03/2009 no va para nada.
yo he avanzado algo pero me atasco. a ver. os cuento.
supongamos que recibo via formulario la fecha de entrada y la fecha de salida de tal modo que esas fechas las recojo en dos variables:
$fechaen
$fechasal
ahora utilizo dos funciones para convertir el formato de fecha (que viene dd/mm/yy) al formato de las fechas en bd mysql (yy/mm/dd):
Código PHP:
///////////////Funcion convertir fecha de entrada/////////////////////
function fmysl($fechaen)
{
ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})", $fechaen, $mifecha);
$lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1];
return $lafecha;
}
///////////////////////////////////////////////////////////////////////
///////////////Funcion convertir fecha de salida/////////////////////
function fmysla($fechasal)
{
ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})", $fechasal, $mifecha);
$lafechaa=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1];
return $lafechaa;
}
///////////////////////////////////////////////////////////////////////
una vez las tengo convertidas, calculo la diferencia de dias que hay en ese intervalo (sin contar el ultimo dia de salida por ejemplo: del 01 de enero al 03 de enero habria dos dias, 01 de enero y 02 de enero porque el 03 de enero ya tiene lugar la salida.
entonces ejecuto esta funcion:
Código PHP:
////función para sacar el número de días de la reserva
$startDate = fmysl($fechaen);
$endDate = fmysl($fechasal);
list($year, $month, $day) = explode('-', $startDate);
$startDate = mktime(0, 0, 0, $month, $day, $year);
list($year, $month, $day) = explode('-', $endDate);
$endDate = mktime(0, 0, 0, $month, $day, $year);
$totalDays = ($endDate - $startDate)/(60 * 60 * 24) ;
echo "<br>Los días de diferencia son: ". $totalDays;
echo "<br>";
conseguido esto ya tengo cuantos dias hay en el intervalo. ahora lo que deberia sacar es sumar esos dias a la fecha inicial para obtener un registro de cada dia. es decir, del 01 de enero al 05 de enero hay 4 dias. con lo cual tendriamos que meter en la base de datos el dia 01 de enero, el dia 02 de enero, el 03 de enero y el 04 de enero. como el 01 de enero es la fecha de entrada no haria falta calcular esa variable, ese registro. luego habria que meter el 02, el 03 y el 04, o sea, 3 dias mas, o sea la diferencia de dias (4) menos 1. como hago eso para ir sumando a la fecha de entrada, 01 de enero un dia mas y al resultado otro dia mas y al resultado otro dia mas (y asi cuantos sean necesario) hasta completar totalmente los registros, en este caso esos 3 dias?