我在 DATE 中根据年生成报告时遇到了困难。该表由date of birth (dob)
组成,存储为YYYY-MM-DD
- 例如。 1955-01-11
。在生成报告之前,用户必须选择年龄和/或 GENDER 。 AGE 分类为:
0-17,18-24,25-54,55-64和65 +
用户选择年龄后,会从选择中捕获该值,例如年龄选择 18-24 。这意味着starting age is 18
和ending age is 24
。因此,要生成的报告应该是成员,年龄介于18至24岁之间。
我的表格:
<label name="age">AGE</label>
<select id="age" name="age" class="form-control">
<option value="">---</option>
<option value="0-17">0 - 17</option>
<option value="18-24">18 - 24</option>
<option value="25-54">25 - 54</option>
<option value="55-64">55 - 64</option>
<option value="65-150">65+</option>
</select>
我的控制器:
if ($this->input->post('submit')) {
$age = $this->input->post('age');
$gender = $this->input->post('gender');
$this->data['results'] = $this->member_model->getMembers($age, $gender);
}
$this->template->build('reports/index', $this->data);
我的模特:
public function getMembers($age="", $gender="") {
if ($age != "") {
// separate age (start, end)
$age = explode('-', $age);
return $this->db->from($this->table_members)
->select(array(
'transmember.firstname',
'transmember.lastname',
'transmember.dob',
'transmember.gender',
))
->where('EXTRACT(YEAR from transmember.dob) >=', $age[1])
->where('EXTRACT(YEAR from transmember.dob) <=', $age[0])
->like('transmember.gender', $gender)
->get()->result();
}
}
使用的框架是CodeIgniter
。面临的问题是:
like
来减少条件语句。感谢任何帮助。
答案 0 :(得分:0)
在模型中尝试以下查询。
public function getMembers($age="", $gender="")
{
if ($age != "")
{
// separate age (start, end)
$age = explode('-', $age);
$this->db->select("firstname,lastname,dob,gender");
$this->db->from("your_table_name");
$this->db->where("dob >=",$age[1]);
$this->db->where("dob <=",$age[0]);
$this->db->where("gender",$gender);
$query = $this->db->get();
if($query->num_rows() > 0)
{
return $query->result();
}
else
{
return NULL;
}
}
}