Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/01/2009, 09:11
Avatar de estibaliz2006
estibaliz2006
 
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: insertar dias de intervalo fechas uno a uno

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(000$month$day$year);
list(
$year$month$day) = explode('-'$endDate);
$endDate mktime(000$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?
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen