2010-05-28 47 views
0

嗯,我正在编写创建DOB选择下拉菜单的类。 我有找出下拉(),它似乎工作,但不完全。代码只创建一个下拉列表,在此下拉列表中,全天,每月和每年的数据都在一个选择中。像:从多个数组+ PHP类创建下拉列表

<label> 
<sup>*</sup>DOB</label> 
<select name="form_bod_year"> 
<option value=""/> 
<option selected="" value="0">1</option> 
<option value="1">2</option> 
<option value="2">3</option> 
<option value="3">4</option> 
<option value="4">5</option> 
<option value="5">6</option> 
.. 
<option value="29">30</option> 
<option value="30">31</option> 
<option value="1">January</option> 
<option value="2">February</option> 
.. 
<option value="11">November</option> 
<option value="12">December</option> 
<option selected="" value="0">1910</option> 
<option value="1">1911</option> 
.. 
<option value="98">2008</option> 
<option value="99">2009</option> 
<option value="100">2010</option> 
</select> 

这是我的代码,我想知道为什么所有的数据都在一个选择。它必须是选择树 - 日:月:年。

 
//dropdown connector 
class DropDownConnector 
{ 
    var $dropDownsDatas; 
    var $field_label; 
    var $field_name; 
    var $locale;

function __construct($dropDownsDatas, $field_label, $field_name, $locale) { $this->dropDownsDatas = $dropDownsDatas; $this->field_label = $field_label; $this->field_name = $field_name; $this->locale = $locale; } function getValue(){ return $_POST[$this->field_name]; } function dropdown(){ $selectedVal = $this->getValue($this->field_name); foreach($this->dropDownsDatas as $keys=>$values){ foreach ($values as $key=>$value){ $selected = ($key == $selectedVal ? "selected" : ""); $options .= sprintf('%s',$key,$value); }; }; return $select_start = "$this->field_desc".$options.""; } function getLabel(){ $non_req = $this->getNotRequiredData(); $req = in_array($this->field_name, $non_req) ? '' : '*'; return $this->field_label ? $req . $this->field_label : ''; } function __toString() { $id = $this->field_name; $label = $this->getLabel(); $field = $this->dropdown(); return 'field_name.'">'.$label.''.$field.''; } }

function generateForm ($lang,$country_list,$states_list,$days_of_month,$month_list,$years){ $xx = array( 'form_bod_day' => $days_of_month, 'form_bod_month' => $month_list, 'form_bod_year' => $years); echo $dropDownConnector = new DropDownConnector($xx,'DOB','bod','en-US'); }

// Call php class to use class on external functionss. $avInq = new formGenerator;

$lang='en-US'; echo generateForm ($lang,$country_list,$states_list,$days_of_month,$month_list,$years);
+1

请注意,您使用的是PHP5的'__construct()',但使用旧式的'var'来声明变量。你应该用新的PHP5方式将它们定义为'public',或者用'private'或'protected'隐藏它们。 – alex 2010-05-28 00:51:36

+1

男人的一个愿望我有一个天的诞生,我拥有的是我的蹩脚的出生日期:( – Ben 2010-05-28 00:59:51

+0

出于兴趣 - 为什么你不让下拉的值与文本值相匹配 - 为什么你不需要任何种类的数学都可以在用户提交时创建日期字符串 – HorusKol 2010-05-28 06:27:48

回答

0

虽然这可能会或可能不会为你工作,我建议采取看看Jquery UI Datepicker。它提供了一个非常好的和高度可定制的日历,可以为您节省大量时间。