From Genitura
<?php
/**
* Select
*
* manage HTML select
*
* @package form
* @author Julien Halle <julienhalle@heptacube.com>
* @version Genitura - 05/01/2009
*/
class Select {
var $name;
var $case;
var $class;
var $on_change;
var $default = Array();
var $str;
var $size;
var $multiple;
function Select($name, $case, $value="---",$default="---") {
$this->name = $name;
$this->case = $case;
$this->set_default($value,$default);
} // constructor
function set_default($value = "---", $default = "---" ) {
($value=='')?($value='---'):($value);
if ( $value != '---' && $default == '---' ) {
$arr = $this->get_values();
$default = $arr[$value];
}
if($this->multiple)
$this->default[$value] = $default;
else
$this->default = array($value=>$default);
}
function set_class($class){
$this->class = $class;
}
function set_on_change($script){
$this->on_change = $script;
}
function set_multiple($bool = "true"){
$this->multiple = $bool;
}
function set_size($size){
if (is_numeric($size)) {
$this->size = $size;
} else {
die('invalid call to set_size($int)');
}
}
function get_html() {
$str = '<select name="'.$this->name.'" id="'.$this->name.'" ';
if ($this->on_change) {
$str .= 'onChange="'.$this->on_change.'" ';
}
if ($this->class) {
$str .= 'class="'.$this->class.'" ';
}
if ($this->size) {
$str .= 'size="'.$this->size.'" ';
}
if ($this->multiple) {
$str .= 'multiple ';
}
$str .= '>';
if ( array_search('---',$this->default) ) {
$str .= $this->make_option('---');
}
$str .= $this->add_options();
$str .= '</select>';
return $str;
}
function add_options() {
$arr = $this->get_values();
foreach ($arr as $value => $string )
$str .= $this->make_option($value,$string);
return $str;
}
function make_option( $value, $string = '' ) {
($string)?$string:($string = $value);
($this->default[$value] == $string )?($selected='selected="selected" '):($selected="");
return '<option value="'.$value.'" '.$selected.'>'.$string.'</option>';
//return '<option value="'.htmlentities($value).'" '.$selected.' >'.htmlentities($string).'</option>';
}
function get_values() {
if (is_array($this->case))
return $this->case;
$arr = array();
$dbh = new SQL_Class('metaphore');
$sql = $dbh->execute("SELECT id, ch_fr FROM filter_question_choice WHERE fk_filter_question_id=".addslashes($this->case));
while ($row = $sql->fetch_assoc())
$arr[$row['id']]=$row['ch_fr'];
return $arr;
}
}
?>