Eruano's Blog

Simple y con foco… como debe ser!

Symfony PHP – ComboBox con horas del dia

with one comment

Trabajando con symfony me vi en la necesidad de crear un combobox para que el usuario pudiese seleccionar una hora del dia, a continuacion describo mi solucion.
Para la creacion del combo en symfony utilice:

<?php echo select_tag('fin', options_for_select($opciones, $valorDefecto)) ?>

Pero necesitaba que el array de opciones que contenia las horas del dia deberia ser dinamico segun la configuracion de la aplicacion, para crear esta lista de opciones defini las siguientes funciones:

<?php
public static function ObtenerHoras(){
return ObtenerHorasDia(15, false);
}
public static function ObtenerHorasDia($distancia, $usar24h){
$resultado = array();
$hora = 0;
$minuto = 0;
$elemento_valor = "";
$elemento_display = "";
while($hora < 24){
while($minuto < 60){
$elemento_valor = $hora * 100;
$elemento_valor = $elemento_valor + $minuto;
$elemento_display = "";
if($minuto < 10 ){
$elemento_display = "0";
}
$elemento_display = $elemento_display.$minuto;
if($usar24h){
$elemento_display = number_format($hora, 0).':'.$elemento_display;
}
else{
if($hora > 11 ) {
$hora12 = $hora - 12;
$elemento_display = $elemento_display.' PM';
}
else{
$elemento_display = $elemento_display.' AM';
$hora12 = $hora;
}
if($hora12 == 0) $hora12 = 12;
$elemento_display = number_format($hora12, 0).':'.$elemento_display;
if($hora12 < 10 ) $elemento_display = "0".$elemento_display;
}
$resultado[$elemento_valor] = $elemento_display;
$minuto += $distancia;
}
$minuto = 0;
$hora += 1;
}
return $resultado;
}

Esto me permitio obtener la lista de horas del dia definiendo unicamente el intervalo entre cada hora (1 minuto, 10 minutos, etc) y definiendo el formato de hora (12h o 24h).

Finalmente mi codigo quedo asi

<?php echo select_tag('fin', options_for_select(ObtenerHoras(), '800')) ?>

Espero sea de ayuda

Written by eruano

13 febrero 2011 a 5:02 pm

Publicado en Programacion, Software Libre

Tagged with , ,

Una respuesta

Subscribe to comments with RSS.

  1. Excelente, me ha gustado tu codigo. Facil y sencillo de utilizar. Gracias.

    Paolo

    14 noviembre 2013 at 12:18 pm


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: