简体   繁体   English

从Codeigniter中的$ _GET数据在数据库的最小值和最大值之间进行搜索

[英]Search between min and max in database from $_GET data in codeigniter

I have a form that after submission my controller gets data from that form and sends to model to retrieve a result from database based on the _GET information. 我有一个表单,提交后,我的控制器从该表单获取数据,并发送到模型以基于_GET信息从数据库检索结果。

In my form there are two fields called min-year and max-year that i use them to search in year column in the database between those numbers. 在我的表单中,有两个字段分别称为min-year和max-year,它们用于在这些数字之间的数据库的year列中进行搜索。 The _GET array is like 'min-year'=>'something' and 'max-year'=>'something' after submission. 提交后,_GET数组就像'min-year'=>'something''max-year'=>'something'

The _GET array is like 'min-year'=>'something' and 'max-year'=>'something' after submission. 提交后,_GET数组就像'min-year'=>'something'和'max-year'=>'something'。

Html: HTML:

<input type='text' name='state' />
<input type='text' name='min-year' />
<input type='text' name='max-year' />

controller: 控制器:

$this->load->model('carinfo_model');
$where=($this->input->get());
$data['cars']=$this->carinfo_model->all_ad($where);

model: 模型:

public function all_ad($where){
->select("*")
->from("cars")
->where($where)         
$result=$this->db->get()->result_array();
return $result;
}

What is the fastest way to transform the _GET array into something readable for '->where()' to search in all other columns plus between min/max in year column in database? _GET数组转换为可读的内容以便'->where()'搜索所有其他列以及数据库中年列中的最小值/最大值之间的最快方法是什么?

I need a proper way to create a 'where' statement(string or array), that contains all other input fields plus a 'between' statement , all in one query from $_GET information if it's possible 我需要一种正确的方法来创建“ where”语句(字符串或数组),该语句包含所有其他输入字段以及一个“ between”语句 ,如果可能的话 ,所有这些都可以从$ _GET信息中进行一次查询

If min-year,max-year or both of them or any other fields were submitted by empty value, result should be base on other fields and should still be able to get the result from database 如果min-year,max-year或它们两者或任何其他字段是通过空值提交的,则结果应基于其他字段,并且仍应能够从数据库中获取结果

Please note i have so many other input fields and this is just part of the form. 请注意,我还有很多其他输入字段,这只是表格的一部分。

In View 视野中

<a href="<?php echo base_url() ?>Controller/Method/MinYear/MaxYead"></a>
<a href="<?php echo base_url() ?>welome/diff/2013/2016"></a>

In Controller 在控制器中

public function diff($min, $max) # Informing method there can be 2 input parameter from URL.
{
    $now = date("Y");
    $minYear = date_format('Y-m-d', $min.'-01-01');
    $maxYear = ($now == $max) ? date("Y-m-d") :  date_format('Y-m-d', $max.'-12-31');

    # in $maxYear if year is current year we cant take 2016-12-31. So we use Current timestamp.
    # If its not current year then we use 12-31. Ex 2014-12-31

}

Note: I have not tested this code with your purpose. 注意:我尚未针对您的目的测试此代码。 Sometimes if date not worked in $minyear use with date() function like this $minYear = date(date_format('Ym-d', $min.'-01-01')); 有时如果date无法在$minyeardate()函数$minyear使用,例如$minYear = date(date_format('Ym-d', $min.'-01-01'));


EDIT 01 编辑01

public function diff()
{
    $min = $this->input->get('min-year');
    $max = $this->input->get('max-year');
    $state = $this->input->get('state');  # updated

    $now = date("Y");
    $minYear = date_format('Y-m-d', $min.'-01-01');
    $maxYear = ($now == $max) ? date("Y-m-d") :  date_format('Y-m-d', $max.'-12-31');

    $data['cars'] = $this->carinfo_model->all_ad($minYear, $maxYear, $state);  # updated
}

In Model 在模型中

public function all_ad($minYear, $maxYear, $state)  # updated
{
    $this->db->select(*);
    $this->db->from('cars');
    $this->db->where('field_name BETWEEN date($minYear) AND date($maxYear)');
    $this->db->where('field_name', $state ); # updated
    $query = $this->db->get();
    $result = $query->->result_array();
    return $result;
}

Try this.It's a controller function code. 试试看,这是控制器功能代码。 Paste this in your controller function and change the field name like your database table field name. 将此粘贴到控制器函数中,然后更改字段名,例如数据库表字段名。

    $a = $this->input->get();
    $state = $a['state'];
    $min_yr = $a['min-year'];
    $max_yr = $a['max-year'];

    $where = "(field_name BETWEEN '$min_yr' AND '$max_yr') AND state = '$state'";

Send the where clause in your model function. 在模型函数中发送where子句。

You can do some thing like below. 您可以执行以下操作。

In controller get both value in different variable as given below: 在控制器中,获得两个值的不同变量如下所示:

$min_year = $this->input->get('min_year');
$max_year = $this->input->get('max_year');

then pass this variable into your model function like below: 然后将此变量传递到模型函数中,如下所示:

$this->model_name->function_name($min_year,$max_year); $这 - > model_name->函数名($ MIN_YEAR,$ MAX_YEAR);

In model use between query as given below: 在模型之间使用查询如下所示:

$sql = "SELECT * FROM table_name
WHERE year BETWEEN $min_year AND $max_year";
$result = $this->db->query($sql)->get()->result_array();

In $result you will get your result. 在$ result中,您将获得结果。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在最大值和最小值之间的多个条件下从数据库中获取记录 - how to get record from database within multiple conditions of between max and min value TeraData查询从表中获取最小值和最大值 - TeraData Query to get min and max from a table 在 Rails 中查找数据库字段之间操作的平均值/最小值/最大值 - Find average/min/max of operation between database fields in Rails MySQL-如何按字符范围(最小到最大)选择数据 - MySQL - How to select data by Character range (between min to max) 如何从数据库获取作为模型Codeigniter中的数组结果的数据 - How to get data from database that result as an array in model codeigniter 如何在Codeigniter中从数据库的两个不同表中获取数据 - How to get Data From two Different Tables of database in Codeigniter 在Codeigniter中:如果我单击从数据库中提取的数据,如何获取URL - In Codeigniter : How to get url if i clicked on the fetched data from database 我在CodeIgniter中需要帮助,从数据库获取数据 - I need help in CodeIgniter , get data from database 从两个日期之间的数据库获取数据 - Get data from a database that is between two dates 从数据库中获取介于两个日期之间的数据 - get data from database that falls in between 2 dates
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM