Mostrar 12 meses siguientes al actual con PHP en un select

En el siguiente ejemplo vamos a ver como mostrar los 12 meses siguientes al mes en curso, con la función date y mktime de PHP.

El código completo es el siguiente.

<select name="" class="">
  <?php
      $mes=date("n"); 
      $rango=11; 
      for ($i=$mes;$i<=$mes+$rango;$i++){ 
         $mesano=date('Y-n', mktime(0, 0, 0, $i, 1, date("Y") ) );
         $meses=date('F', mktime(0, 0, 0, $i, 1, date("Y") ) );
         $ano=date('Y', mktime(0, 0, 0, $i, 1, date("Y") ) );
         echo "<option value='$mesano'>$meses/$ano</option>"; 
      } 
  ?> 
</select>

Las dos primeras líneas de código corresponden a la apertura de las etiquetas <select> y <php>, no hay mucho más que decir.
En la tercera línea  establecemos el formato para la variable $mes utilizando la función date, la ‘n’ en minúscula nos devuelve el número del mes sin el cero inicial. (Ej. julio = 7) Si usáramos la ‘m’ minúscula nos devuelve el mes en números y con cero inicial. (Ej. julio = 07).
La cuarta línea define la cantidad de meses que queremos mostrar en la variable $rango.
Entre la quinta y décima línea se produce la magia.
Dentro del ciclo for, establecemos el valor de $i igual al mes en curso ($i=$mes), luego establecemos la condición ($i<=$mes+$rango), osea, siempre que $i sea menor o igual que a la suma de $mes + $rango, por último se le suma una unidad a $i ($i++).

$mesano=date('Y-n', mktime(0, 0, 0, $i, 1, date("Y") ) );

Este código superior nos permite obtener el año con 4 digitos (Y) y el mes (n) en número sin el cero delante. Lean la explicación de mktime donde semuestran las distintas opciones de la función. (Ej. 1984-8)

$meses=date('F', mktime(0, 0, 0, $i, 1, date("Y") ) );

En esta línea obtenemos los meses (F) en formato textual completa (Ej. Enero, Febrero,etc.

$ano=date('Y', mktime(0, 0, 0, $i, 1, date("Y") ) );

En este último ejemplo obtenemos el año con 4 digitos (Y).(Ej. 1984)

echo "<option value='$mesano'>$meses/$ano</option>";

Por último usamos el echo para mostrar el <select>. Tanto el valor (value) como lo que muestra el <select> se puede modificar según la necesidad de cada uno.

Aquí pueden ver el ejemplo funcionando.

Solo resta aclarar que PHP muestra los meses en inglés. Para traducirlos al español hacen falta unas líneas más de código.

if ($meses=="January") $meses="Enero";
 if ($meses=="February") $meses="Febrero";
 if ($meses=="March") $meses="Marzo";
 if ($meses=="April") $meses="Abril";
 if ($meses=="May") $meses="Mayo";
 if ($meses=="June") $meses="Junio";
 if ($meses=="July") $meses="Julio";
 if ($meses=="August") $meses="Agosto";
 if ($meses=="September") $meses="Septiembre";
 if ($meses=="October") $meses="Octubre";
 if ($meses=="November") $meses="Noviembre";
 if ($meses=="December") $meses="Diciembre";

Esto hay que copiarlo después de

$meses=date('F', mktime(0, 0, 0, $i, 1, date("Y") ) );

y  antes de

$ano=date('Y', mktime(0, 0, 0, $i, 1, date("Y") ) );

Ver versión traducida

 


Entradas relacionadas

Comentarios

Loading Facebook Comments ...

No Comments Yet.

No Trackbacks.