function plantrabajo($con,$sql, $anyo, $mes, $tipo){//$tipo = menu pulsado $recursofecha = mktime(0,0,0,$mes, 1, $anyo); // recojo el valor entero de la fecha $diasenmes = date("t", $recursofecha); //recojo el numero de dias que hay en el mes dado $primerdiames = date("D", $recursofecha);//recojo el nombre del primer dia del mes switch($primerdiames){//segun primer dia, nos saltaremos mas o menos casillas al comienzo del calendario. case "Mon": $salto = 0; break; case "Tue": $salto = 1; break; case "Wed": $salto = 2; break; case "Thu": $salto = 3; break; case "Fri": $salto = 4; break; case "Sat": $salto = 5; break; case "Sun": $salto = 6; break; } //recojo los datos que necesito, ordenados de la fecha menor a la mayor, del mes dado. $recursopt=db_query($con,db_querysegura($con,$sql)); $datospt=db_assoc($recursopt); if (isset($datospt) && $datospt!=""){ while ($datospt){ $arrdatos[]=$datospt; $datospt=db_assoc($recursopt); } //total de tds que tendre en la tabla $totalpintar = $diasenmes+$salto; //calculo se semanas (tr) //se ponen los dias en un array para despues simplemente usar array_chunk y partir dicho array de dias en array de semanas /*la madre del cordero arraydias se meten a 0 tantos valores como dias haya que saltarse (para empezar a pintar el primer dia del mes en el dia de la semana que corresponda) */ for ($i=0; $i<$salto; $i++){ $arraydias[]=0; } /*seguidamente, se rellena el contenido de cada dia del array. si el dia forma parte del mes, - para cada dia, se recorren los servicios que ha ddecuelto la consulta $datospt. - se comprueba, dada la fecha del dia, y la del servicio en el que se encuentra el bucle de servicios - si el servicio esta iniciandose - si continua - si finaliza - el resultado de la comprobacion se representa, metiendo en la variable correspondiente (inicio, cont, fin) el numero de servicios de cada categoria - por ultimo, se añade al array de dias un array asociativo que contiene el numero del dia, y el numero de servicios de cada categoria para ese dia. en otro caso, si se ha pasado el ultimo dia del mes, en cuyo caso se rellena con 0 */ for ($i=1;$i<=$totalpintar; $i++){ if ($i<=$diasenmes){ $continicio = 0; $contcont=0; $contfin=0; foreach ($arrdatos as $servicio){ $recursoinicioservicio = MySqlFecha($servicio["Fecha_Hora_Inicio"]); $inicioservicio = strtotime(FechaMySql($recursoinicioservicio)); $recursofinservicio= MySqlFecha($servicio["Fecha_Hora_Fin"]); $finservicio = strtotime(FechaMySql($recursofinservicio)); $fechadiascompleta=strtotime("$anyo-$mes-$i"); //if ($fechadiascompleta>=$inicioservicio && $fechadiascompleta<=$finservicio && $i<=$diasenmes){//si el dia está en el intervalo if ($fechadiascompleta==$inicioservicio){ $continicio++; } if ($fechadiascompleta>$inicioservicio && $fechadiascompleta<$finservicio){ $contcont++; } if ($fechadiascompleta==$finservicio){ $contfin++; } //} }//fin foreach $inicio=$continicio; $cont=$contcont; $fin=$contfin; $arraydias[]=array("dia"=>$i<10? "0".$i : $i, "inicio"=>$inicio, "cont"=>$cont, "fin"=>$fin); }else{ $arraydias[]=0; }//fin if .. else }//fin for $arraysemanas = array_chunk($arraydias, 7); //var_dump($arraydias); //pintamos //cabecera $pt= "" . "" . "" . "" . "" . "" . "" . "" . "" . ""; //casillas foreach($arraysemanas as $semanas){ $pt.= ""; foreach ($semanas as $dias){ $pt.= ""; $pt.= ""; $pt.= "
LunesMartesMiercolesJuevesViernesSabadoDomingo
".$dias["dia"]."" : ""; $pt.="
"; if ($dias!=0){ $pt.=""; if ($dias["inicio"]!=null){ $pt.=""; $pt.=""; } if ($dias["cont"]!=null){ $pt.=""; $pt.=""; } if ($dias["fin"]!=null){ $pt.=""; $pt.=""; } $pt.= "
"; $pt.=$dias["inicio"]; $pt.="
"; $pt.=$dias["cont"]; $pt.="
"; $pt.=$dias["fin"]; $pt.="
"; } $pt.= ""; } $pt.= ""; } $pt.= ""; }else{ $pt="
No hay servicios.
"; } return($pt); }