Ver Mensaje Individual
  #3 (permalink)  
Antiguo 02/11/2012, 10:00
Avatar de miguec04
miguec04
 
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Problema con select en DB Mysql PHP

Yo preferí hacer un metodo static para acceder a el en todo momento

Código PHP:
Ver original
  1. /**
  2.      * @tutorial Metodo que organiza un array de AbsEnumerado en un select de html
  3.      *
  4.      * @author miguel.carmona 2011/12/20
  5.      *
  6.      * @param $nombre
  7.      * @param $valorInicial
  8.      * @param $datos
  9.      * @param $id
  10.      */
  11.     public static function getComboGenerico($nombre,$valorInicial,$datos,$id=NULL,$class='cajas',$otros=NULL,$opcionDefecto=TRUE,$palabraDefecto='TODOS') {
  12.         $resultado              = '<select name="'.$nombre.'" id="'.(self::getVacio($id) ? $nombre : $id).'" class="'.$class.'" '.$otros.'>';
  13.         if($opcionDefecto) {
  14.             $resultado              .= '<option value="">'.$palabraDefecto.'</option>';
  15.         }
  16.        
  17.         foreach ($datos as $dato) {
  18.             if($dato instanceof AbsEnumerado) {
  19.                 $resultado          .= '<option value="'.$dato->getId().'" '.($valorInicial==$dato->getId() ? 'selected="selected"' : '').'>'.$dato->getDescripcion().'</option>';
  20.             }  
  21.         }
  22.         $resultado              .= '</select>';
  23.         return $resultado;
  24.     }

La clase AbsEnumerado es:

Código PHP:
Ver original
  1. abstract class AbsEnumerado {
  2.     protected $id                   = NULL;
  3.     protected $descripcion          = NULL;
  4.        
  5.     public function __construct($id,$descripcion) {
  6.         $this->id               = $id;
  7.         $this->descripcion      = $descripcion;
  8.     }
  9.    
  10.     public function getId() {
  11.         return $this->id;
  12.     }
  13.    
  14.     public function setId($id) {
  15.         $this->id       = $id;
  16.     }
  17.    
  18.     public function getDescripcion() {
  19.         return $this->descripcion;
  20.     }  
  21.    
  22.     public function setDescripcion($descripcion) {
  23.         $this->descripcion      = $descripcion;
  24.     }
  25. }

a partir de ahi se crean las clases para hacerlo mas practico

Clase enumerado:

Código PHP:
Ver original
  1. require_once ('IntEnumerado.php');
  2. require_once ('AbsEnumerado.php');
  3.  
  4. class ESexo extends AbsEnumerado implements IntEnumerado {
  5.     private static $datos;
  6.     const MASCULINO         = 'N_1';
  7.     const FEMENINO          = 'N_2';
  8.    
  9.     public static function getValores() {
  10.         self::$datos[self::MASCULINO]       = new ESexo('1','Masculino');
  11.         self::$datos[self::FEMENINO]        = new ESexo('2','Femenino');
  12.     }
  13.  
  14.     public static function getIndice($buscar) {
  15.         self::getValores();
  16.         return self::$datos[$buscar];  
  17.     }
  18.    
  19.     /**
  20.      * @tutorial Metodo busca un valor en el vector para tipo de ingreso del estudiante
  21.      *
  22.      * @author miguel.carmona
  23.      *
  24.      * @param $buscar
  25.      */
  26.     public static function getResultado($buscar) {
  27.         self::getValores();
  28.         $resultado      = new ESexo('-1','');
  29.         foreach (self::$datos as $dato) {
  30.             if($dato->getId()==$buscar) {
  31.                 $resultado  = $dato;
  32.             }
  33.         }
  34.         return $resultado;
  35.     }
  36.    
  37.     public static function getDatos() {
  38.         self::getValores();
  39.         return self::$datos;
  40.     }
  41. }

interface IntEnumerado

Código PHP:
Ver original
  1. interface IntEnumerado {
  2.     public static function getValores();
  3.     public static function getResultado($buscar);  
  4.     public static function getDatos();
  5.     public static function getIndice($buscar);
  6. }
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co