Pues para empezar puedes realmente romper tu "clase" en una clase con mas propiedades y metodos.
Código PHP:
class ComboBox {
private $tabla;
private $opcion;
private $valor;
private $datosCombo;
public function __construct( $tabla, $opcion, $valor ) {
$this->tabla = $tabla;
$this->opcion = $opcion;
$this->valor = $valor;
$this->datosCombo = array();
}
public function setTabla( $tabla ) {
$this->tabla = $tabla;
}
public function getTabla() {
return $this->tabla;
}
// Aqui faltarian mas "setters" y "getters"
public function loadData() {
$sql = "SELECT * FROM " . $this->table;
$conexion = new Conexion();
$conexion->Query( $sql );
$data = array();
while( $row = $conexion->fetchRow() ) {
// Aqui suponemos que tenemos dos valores del query
$data[$row[0]] = $row[1];
}
$this->datosCombo = $data;
}
public function dibujaCombo() {
$html = "<select name=\"%s\" class=\"botones\">%s</select>";
$opciones = array();
$opHTML = "<option value=\"%s\"%s>%s</option>";
foreach( $this->datosCombo as $value => $option ) {
$selected = '';
if( $value == $this->value ) $selected = ' selected="';
$opciones[] = sprintf( $opHTML, $value, $selected, $option );
}
return sprintf( $html, $this->table, implode( "\n", $opciones ) );
}
public function __toString() {
return $this->dibujaCombo();
}
}
y lo puedes usar asi:
Código PHP:
$combo = new ComboBox( "listas", "producto", "id_producto" );
$combo->loadData();
echo $combo; // Esto llama el metodo de __toString()