function calcula_numero_dia_semana($dia,$mes,$ano){
$numerodiasemana = date('w', mktime(0,0,0,$mes,$dia,$ano));
if ($numerodiasemana == 0)
$numerodiasemana = 6;
else
$numerodiasemana--;
return $numerodiasemana;
}
//funcion que devuelve el último día de un mes y año dados
function ultimoDia($mes,$ano){
$ultimo_dia=28;
while (checkdate($mes,$ultimo_dia + 1,$ano)){
$ultimo_dia++;
}
return $ultimo_dia;
}
function dame_nombre_mes($mes){
switch ($mes){
case 1:
$nombre_mes="Enero";
break;
case 2:
$nombre_mes="Febrero";
break;
case 3:
$nombre_mes="Marzo";
break;
case 4:
$nombre_mes="Abril";
break;
case 5:
$nombre_mes="Mayo";
break;
case 6:
$nombre_mes="Junio";
break;
case 7:
$nombre_mes="Julio";
break;
case 8:
$nombre_mes="Agosto";
break;
case 9:
$nombre_mes="Septiembre";
break;
case 10:
$nombre_mes="Octubre";
break;
case 11:
$nombre_mes="Noviembre";
break;
case 12:
$nombre_mes="Diciembre";
break;
}
return $nombre_mes;
}
function mostrar_calendario($mes,$ano){
//tomo el nombre del mes que hay que imprimir
$nombre_mes = dame_nombre_mes($mes);
//construyo la cabecera de la tabla
echo "
";
echo "";
//calculo el mes y ano del mes anterior
$mes_anterior = $mes - 1;
$ano_anterior = $ano;
if ($mes_anterior==0){
$ano_anterior--;
$mes_anterior=12;
}
echo "<< | ";
echo "$nombre_mes $ano | ";
echo "";
//calculo el mes y ano del mes siguiente
$mes_siguiente = $mes + 1;
$ano_siguiente = $ano;
if ($mes_siguiente==13){
$ano_siguiente++;
$mes_siguiente=1;
}
echo ">> |
|
";
echo '
L |
M |
MI |
J |
V |
S |
D |
';
//Variable para llevar la cuenta del dia actual
$dia_actual = 1;
//calculo el numero del dia de la semana del primer dia
$numero_dia = calcula_numero_dia_semana(1,$mes,$ano);
//echo "Numero del dia de demana del primer: $numero_dia
";
//calculo el último dia del mes
$ultimo_dia = ultimoDia($mes,$ano);
//escribo la primera fila de la semana
echo "";
for ($i=0;$i<7;$i++){
if ($i < $numero_dia){
//si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda
echo " | ";
} else {
echo "$dia_actual | ";
$dia_actual++;
}
}
echo "
";
//recorro todos los demás días hasta el final del mes
$numero_dia = 0;
while ($dia_actual <= $ultimo_dia){
//si estamos a principio de la semana escribo el
if ($numero_dia == 0)
echo "
";
echo "$dia_actual | ";
$dia_actual++;
$numero_dia++;
//si es el uñtimo de la semana, me pongo al principio de la semana y escribo el
if ($numero_dia == 7){
$numero_dia = 0;
echo "";
}
}
//compruebo que celdas me faltan por escribir vacias de la última semana del mes
for ($i=$numero_dia;$i<7;$i++){
echo " | ";
}
echo "";
echo "
";
}
function formularioCalendario($mes,$ano){
echo '
';
}