> Manuales > Calendario PHP

La segunda función en importancia es la que se encarga de mostrar el formulario que nos sirve para cambiar el mes y el año del calendario.

Continuamos avanzando en la práctica de construcción de un calendario en PHP. Ahora que hemos visto cómo realizar la función que muestra el calendario, podremos pasar a ver cómo realizar el formulario que hay debajo, que permite seleccionar rápidamente cualquier mes/año para visualizarlo en el calendario.

Todo lo haremos a través de una función llamada formularioCalendario(). Esta función sirve para imprimir en pantalla el formulario que utilizamos para seleccionar cualquier otro mes y año que deseemos visualizar en la página. No debería significar un problema muy gordo, pues se trata de un simple formulario. Lo único que complica un poco el código es que deseamos que el formulario presente inicialmente los valores de mes y año que está mostrando el calendario, pero veremos rápido cómo hacerlo.

Función formularioCalendario ($mes,$ano)

Para empezar, vemos que la función recibe el mes y el año, que nos servirá para saber el valor por defecto a mostrar en nuestro formulario. El código lo podemos ver por partes a continuación.

echo '
<table align="center" cellspacing="2" cellpadding="2" border="0">
<tr><form action="index.php" method="POST">';


Con esto imprimimos por pantalla la cabecera de la tabla donde vamos a alojar el formulario y la cabecera del propio formulario. Nos fijamos que el atributo action del formulario lo tenemos dirigido hacia el archivo índice.

echo '
<td align="center" valign="top">
      Mes: <br>
      <select name=nuevo_mes>
      <option value="1"';
if ($mes==1)
echo "selected";
echo'>Enero</option>
      <option value="2" ';
if ($mes==2)
   echo "selected";
echo'>Febrero</option>
      <option value="3" ';
if ($mes==3)
   echo "selected";
echo'>Marzo</option>
      <option value="4" ';
if ($mes==4)
   echo "selected";
echo '>Abril</option>
      <option value="5" ';
if ($mes==5)
      echo "selected";
echo '>Mayo</option>
      <option value="6" ';
if ($mes==6)
   echo "selected";
echo '>Junio</option>
      <option value="7" ';
if ($mes==7)
   echo "selected";
echo '>Julio</option>
      <option value="8" ';
if ($mes==8)
   echo "selected";
echo '>Agosto</option>
      <option value="9" ';
if ($mes==9)
   echo "selected";
echo '>Septiembre</option>
      <option value="10" ';
if ($mes==10)
   echo "selected";
echo '>Octubre</option>
      <option value="11" ';
if ($mes==11)
   echo "selected";
echo '>Noviembre</option>
      <option value="12" ';
if ($mes==12)
echo "selected";
echo '>Diciembre</option>
      </select>
      </td>';


Estas líneas de código sirven para escribir el <select> correspondiente al mes. Lo único que lo hace complicado es precisamente el hecho de que tenemos que comprobar si el mes que se va a imprimir es el mes que está mostrando el calendario, pues en ese caso deberíamos marcar como selected el <option> correspondiente. Esto se hace con los sucesivos if que hay insertados entre cada etiqueta <option>.

echo '      
    <td align="center" valign="top">
      Año: <br>
      <select name=nuevo_ano>
   ';
//este bucle se podría hacer dependiendo del número de año que se quiera mostrar
//yo voy a mostar 10 años atrás y 10 adelante de la fecha mostrada en el calendario
for ($anoactual=$ano-10; $anoactual<=$ano+10; $anoactual++){
   echo '<option value="' . $anoactual . '" ';
   if ($ano==$anoactual) {
      echo "selected";
   }
   echo '>' . $anoactual . '</option>';
}
echo '</select>
      </td>';


De manera parecida a como se ha realizado para los meses, se escribe también el año, comprobando en cada ocasión si el año que se va a escribir corresponde con el del calendario. En este ejemplo ponemos años desde el 2000 al 2004, cualquiera de vosotros puede introducir más o menos años con pocos cambios.

echo '
</tr>
<tr>
    <td colspan="2" align="center"><input type="Submit" value="[ IR A ESE MES ]"></td>
</tr>
</table><br>

<br>

</form>';


Para acabar mostramos el botón de submit del formulario y las etiquetas de cierre de tabla y formulario.

Código completo de la función

Vendría bien ver de una vez todo el código junto de esta función para mostrar el formulario de selección rápida de mes y año.

function formularioCalendario($mes,$ano){
echo '
   <table align="center" cellspacing="2" cellpadding="2" border="0">
   <tr><form action="index.php" method="POST">';
echo '
<td align="center" valign="top">
      Mes: <br>
      <select name=nuevo_mes>
      <option value="1"';
if ($mes==1)
echo "selected";
echo'>Enero</option>
      <option value="2" ';
if ($mes==2)
   echo "selected";
echo'>Febrero</option>
      <option value="3" ';
if ($mes==3)
   echo "selected";
echo'>Marzo</option>
      <option value="4" ';
if ($mes==4)
   echo "selected";
echo '>Abril</option>
      <option value="5" ';
if ($mes==5)
      echo "selected";
echo '>Mayo</option>
      <option value="6" ';
if ($mes==6)
   echo "selected";
echo '>Junio</option>
      <option value="7" ';
if ($mes==7)
   echo "selected";
echo '>Julio</option>
      <option value="8" ';
if ($mes==8)
   echo "selected";
echo '>Agosto</option>
      <option value="9" ';
if ($mes==9)
   echo "selected";
echo '>Septiembre</option>
      <option value="10" ';
if ($mes==10)
   echo "selected";
echo '>Octubre</option>
      <option value="11" ';
if ($mes==11)
   echo "selected";
echo '>Noviembre</option>
      <option value="12" ';
if ($mes==12)
echo "selected";
echo '>Diciembre</option>
      </select>
      </td>';
echo '      
    <td align="center" valign="top">
      Año: <br>
      <select name=nuevo_ano>
   ';
//este bucle se podría hacer dependiendo del número de año que se quiera mostrar
//yo voy a mostar 10 años atrás y 10 adelante de la fecha mostrada en el calendario
for ($anoactual=$ano-10; $anoactual<=$ano+10; $anoactual++){
   echo '<option value="' . $anoactual . '" ';
   if ($ano==$anoactual) {
      echo "selected";
   }
   echo '>' . $anoactual . '</option>';
}
echo '</select>
      </td>';
echo '
   </tr>
   <tr>
    <td colspan="2" align="center"><input type="Submit" value="[ IR A ESE MES ]"></td>
   </tr>
   </table><br>
   
   <br>
   
   </form>';
}

Si lo deseas, puedes ver el calendario en funcionamiento. En el capítulo siguiente veremos otras funciones importantes de esta librería PHP de calendario.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual