Les dejo un pequeno modulo en php que genera la base para un calendario semanal (a pedido de adminfire, espero que te sea util)
el script recibe por get la fecha en la cual armamos la semana a partir desde un lunes hacia un domingo.
mostramos en 7 recuadros los dias de la semana con el orden de lunes a domingo y mostramos link hacia adelante o hacia atras para navegar.
estilos css:
codigo PHP comentado en cada accion:
< ?php
//con esta funcion una vez q tengo los dias de la semana traigo el nombre en español de cada dia
function diaespanol($valor){
$valor = strtotime($valor);
switch (date(‘w’, $valor)){
case 0: $titleday =”Domingo”; break;
case 1: $titleday =”Lunes”; break;
case 2: $titleday =”Martes”; break;
case 3: $titleday =”Miercoles”; break;
case 4: $titleday =”Jueves”; break;
case 5: $titleday =”Viernes”; break;
case 6: $titleday =”Sabado”; break;
}
return $titleday;
}
function mesydia($valor){
$mes = substr($valor,5,+2);
$dia = substr($valor,8,+2);
switch ($mes){
case ’01′: $titulomes =”Ene”; break;
case ’02′: $titulomes =”Feb”; break;
case ’03′: $titulomes =”Mar”; break;
case ’04′: $titulomes =”Abr”; break;
case ’05′: $titulomes =”May”; break;
case ’06′: $titulomes =”Jun”; break;
case ’07′: $titulomes =”Jul”; break;
case ’08′: $titulomes =”Ago”; break;
case ’09′: $titulomes =”Sep”; break;
case ’10′: $titulomes =”Oct”; break;
case ’11′: $titulomes =”Nov”; break;
case ’12′: $titulomes =”Dic”; break;
}
return $titulomes.’, ‘.$dia;
}
//el dia desde el q comienzo a mostrar es recibido por get, en caso de no venir tomo como base el dia actual.
$dia=$_GET['dia'];
if($_GET['dia']==”"){
$dia = date(‘Y-m-d’);
}
//con este switch saco la fecha del dia inicial del calendario de la semana de 7 dias de lunes a domingo
$diarecibido =$dia;
$diasemana = strtotime($dia);
switch (date(‘w’, $diasemana)){
case 0: $titleday =”Domingo”; $menos=6;
$iniciosemana = date(“Y-m-d”, strtotime(“$diarecibido -$menos day”));
break;
case 1: $titleday =”Lunes”; $menos=1;
$iniciosemana = $diarecibido;
break;
case 2: $titleday =”Martes”; $menos=1;
$iniciosemana = date(“Y-m-d”, strtotime(“$diarecibido -$menos day”));
break;
case 3: $titleday =”Miercoles”; $menos=2;
$iniciosemana = date(“Y-m-d”, strtotime(“$diarecibido -$menos day”));
break;
case 4: $titleday =”Jueves”; $menos=3;
$iniciosemana = date(“Y-m-d”, strtotime(“$diarecibido -$menos day”));
break;
case 5: $titleday =”Viernes”; $menos=4;
$iniciosemana = date(“Y-m-d”, strtotime(“$diarecibido -$menos day”));
break;
case 6: $titleday =”Sabado”; $menos=5;
$iniciosemana = date(“Y-m-d”, strtotime(“$diarecibido -$menos day”));
break;
}
//creo los link de siguiente y anterior
$linkanterior = date(“Y-m-d”, strtotime(“$iniciosemana -1 day”));
$linksiguiente = date(“Y-m-d”, strtotime(“$iniciosemana +8 day”));
echo ‘
Anterior – Siguiente’;
//echo ‘Dia recibido: ‘.$dia.’, ‘.$titleday.’ y el inicio de semana es : ‘.$iniciosemana.’
’;
//creo calendario
echo ‘
’;
for($i=0; $i<7; $i++){
$mostrable =date(“Y-m-d”, strtotime(“$iniciosemana +$i day”));
$titleday=diaespanol($mostrable);
if($titleday==’Sabado’ || $titleday==’Domingo’){$findesemana=’style=”background:#FF0033″‘;}else{$findesemana=”;}
echo ‘
’.$titleday.’
’.mesydia($mostrable).’
’;
}
echo ‘
’;
?>