Uso de combos para capturar fechas en PHP

Obviamente cuando desarrollamos aplicaciones, siempre es común trabajar con fechas. En muchos formularios siempre existe el apartado para fechas de nacimiento, registro, etc. Para no dejarle ningún margen de error al usuario al trabajar con fechas en nuestra aplicación, vamos a utilizar combos para que el usuario elija la fecha a gusto

Empecemos con el día

Importante recordar que cuando hablamos de fechas, los días se capturan obligatoriamente en dos dígitos, eso quiere decir que, para capturar el día 5 por ejemplo, se debe capturar 05 y no sólo 5. Claro, cada gestor de base de datos y lenguaje de programación tiene formas propias y diferentes de formatear fechas, así que en algunos casos esto podría no ser necesario, sin embargo, como vamos a trabajar con PHP y muchos seguramente necesitaran pasar esto a MySQL, dejémosle así y comencemos con el código. Primero, abramos un objeto select del HTML tradicional, llamémosle día

<select name="”dia”">

Ahora, es el momento de comenzar un bloque de código PHP

<?php
	for($d=1;$d<=31;$d++)  
	{
		if($d<10) 
			$dd = "0" . $d; 
		else
			$dd = $d; 
		echo "<option value='$dd'>$dd</option>";
	}
?>

Como se observa, comenzamos con un ciclo for de 1 hasta 31 porque sabemos que será la máxima cantidad de días a los que podemos aspirar. La sentencia if($d<10) revisa si aún no hemos llegado a 10 debido a que necesitamos agregarle el “0” inicial al número correspondiente del día. Ese hecho lo conseguimos con la sentencia $dd = “0” . $d; donde con una nueva variable llamada $dd concatenamos el “0” inicial con la variable $d En caso contrario, simplemente asignamos a la nueva variable, el valor de la anterior. Por último y con un simple echo imprimimos el par <option></option> usando la variable $dd, tanto como valor del objeto como etiqueta del mismo. Ahora simplemente cerramos con </select>

Continuemos con el mes

Sabiendo que cuando hablamos de meses, sólo tenemos hasta 12 como máximo, hemos de utilizar un ciclo para generar las 12 opciones disponibles, e igual que con los días, necesitamos capturarlos en dos dígitos. Primero abramos el objeto select

<select name=”mes”>

Ahora abramos el bloque PHP

<?php
	for($m = 1; $m<=12; $m++)
	{
		if($m<10)
			$me = "0" . $m;
		else
			$me = $m;
		switch($me)
		{
			case "01": $mes = "Enero"; break;
			case "02": $mes = "Febrero"; break;
			case "03": $mes = "Marzo"; break;
			case "04": $mes = "Abril"; break;
			case "05": $mes = "Mayo"; break;
			case "06": $mes = "Junio"; break;
			case "07": $mes = "Julio"; break;
			case "08": $mes = "Agosto"; break;
			case "09": $mes = "Septiembre"; break;
			case "10": $mes = "Octubre"; break;
			case "11": $mes = "Noviembre"; break;
			case "12": $mes = "Diciembre"; break;			
		}
		echo "<option value='$me'>$mes</option>";
	}
?>

Como se puede observar, en la variable $me hemos tomado el número correspondiente al mes que el usuario seleccione, luego con un switch revisamos cada uno de los 12 posibles casos para identificar el mes por su nombre; no hay que olvidar el break en cada caso posible. Por último, imprimimos las opciones usando como valor el número del mes (representado por la variable $me) y como etiqueta el nombre del mes (representado por la variable $mes) Para finalizar con el mes, cerremos el </select>. Siendo este el resultado.

Usando PHP y un ComboBox para mostrar los meses del año

Finalicemos con el año

Por último, para capturar el año, podemos definir una edad mínima y una edad máxima de capturar, esto nos servirá para definir la cantidad de años que queremos mostrar, por ejemplo, podemos definir 75 años como edad límite y 13 años como edad mínima. Abramos el objeto select.

<select name=”anio”>

Y ahora el código PHP

<?php
	$tope = date("Y");
	$edad_max = 75;
	$edad_min = 13;
	for($a= $tope - $edad_max; $a<=$tope - $edad_min; $a++)
		echo "<option value='$a'>$a</option>"; 
?>

La variable $tope obtiene el año en curso, luego con las edades máxima y mínima definidas, creamos el ciclo que comenzara desde el año actual menos la edad máxima, por ejemplo si el año actual es 2010, al quitarle 75 quedamos en 1935 y al quitarle 13, quedamos en 1997, lo que significa que la edad fluctuará entre 1935 y 1997. Ahora que ya quedo todo listo, deberíamos tener algo como lo que se muestra en la imagen de abajo.

Fechas con Combobox y PHP

Recursos adicionales

  1. Ver el ejemplo funcionando
  2. Descargar Código completo
  3. ¿Dudas? Pregunta en los foros
WordPress SEO fine-tune by Meta SEO Pack from Poradnik Webmastera