SoloCodigo
		Programación Web y Scripting => PHP => Mensaje iniciado por: J-Ant en Viernes 12 de Noviembre de 2010, 12:34
		
			
			- 
				Buenas, estoy como quien dice, iniciandome en php, e intento añadir un intervalo de dias a una fecha dada, siempre que dicha fecha esté en un intevalo. 
 El asunto es que no funciona, me da"Warning: mktime() expects parameter 6 to be long".
 
 Os paso el codigo, a ver si se os ocurre algo:
 
 <?php
 $Inicio = "10/11/2010";
 $Fin= "10/05/2011";
 $Fecha=$Inicio;
 $Dias= date('t', $Fecha);
 echo "Fecha Inicio intervalo " , $Inicio, "<br>";
 echo "Fecha Fin Intervalo " , $Fin,"<br>";
 echo "Dias del mes ", $Dias,"<br>";
 echo $Fecha;
 do {
 $Dias= date('t', $Fecha);
 echo $Dias;
 echo $Fecha, "<br>";
 $dyh = mktime(0, 0, 0, $Fecha[1], $Fecha[0], $Fecha[2]) + 24*60*60*$Dias;
 $Fecha = date('d',$dyh)."/".date('m',$dyh)."/".date('Y',$dyh);
 echo $Fecha, "<br>";
 }
 while ($Fecha < $Fin);
 
 
 ?>
 
 
 
 Gracias de antemano
- 
				Estoy viendo que $fecha contiene un string, entonces porque lo accedes como si fuera un array??
			
- 
				Cierto, mezcle codigo, éste venia de un explode.
 La idea es la siguiente: Estoy modificando un calendario, que tiene agenda de eventos, y para dicha agenda, necesito que una tarea/evento se pueda repetir durante x tiempo. Pongamos por ejemplo, una reunion con distintos departamentos cada 20 de mes, o llamar al asesor cada 3 meses, el dia 3.
 
 Para ello, necesito la fecha de inicio del intervalo, la fecha de finalizacion, la frecuencia(cada mes, cada 2 meses, cada año), y el dia que ocurrira el evento(cada dia 22, cada dia 3, etc).
 
 Por eso, creé el script en el que queria añadir un nº determinado de dias a una fecha.
 Ejemplo:
 Inicio: 15/11/2010
 Fin: 30/05/2011
 Frecuencia: cada 2 meses
 Dia: 3(el evento se realizara cada dia 3).
 El codigo original, os lo paso, tiene 2 fallos:
 1) Al añadir dias a una fecha, toma como valor fijo 30 dias por mes, con lo que ignora variaciones Febrero(28), o Marzo(31).
 2) Se puede decidir cada cuanto tiempo quiero el evento(cada 2 meses, 2 años, cada mes, etc), pero no toma en cuenta la variable donde se recoge dicho dato.
 if($type == 'Monthly') {
 //Variables que se recogen:
 //$Type: Tipo de repeticion(Diaria, Semanal, mensual o anual)
 //avg_monthcount: El asunto principal por el que falla, los dias del mes. Coge 30
 //$Interval: Intervalo en dias final.(Dia 3 + 30 dias)
 //$Starting: Fecha inicio de intervalo
 // $limiting: Fecha fin del intervalo
 //$Repeatinteval: La variable que devuelve la fecha una vez sumados los dias
 //Errores: 1) No se utiliza la frecuencia(cada 2 meses, cada 2 años), que se recoge en una variable $Frequency. En su lugar está la variable $count, que agregara al calendario, en funcion del tipo, una repeticion mensual, anual, sin tener en cuenta la frecuencia(cada 2 meses, cada 2 años, etc)
 //2) Se toma como numero de dias del mes 30, en $avg_monthcount
 $count = 0;
 $avg_monthcount = 30;
 while(true) {
 ++$count;
 $interval = $count * $avg_monthcount;
 
 if(self::mktime(self::nexttime($starting, "+$interval days")) > $limiting) {
 break;
 }
 $repeatInterval[] = $interval;
 }
 } else if($type == 'Yearly') {
 //fallaria en años bisiestos
 $count = 0;
 $avg_monthcount = 365;
 while(true) {
 ++$count;
 $interval = $count * $avg_monthcount;
 if(self::mktime(self::nexttime($starting, "+$interval days")) > $limiting) {
 break;
 }
 $repeatInterval[] = $interval;
 }
 }
 return $repeatInterval;
 
 Gracias de nuevo por la atención.
- 
				Para esos casos, yo siempre ocupo MySQL
 
 -   
-   
- mysql_query("SELECT DATE_ADD('2010-03-26', INTERVAL 123 DAY)"); 
-   
-   
-