如何使用post将从datepicker中选择的日期传递给sql查询?

时间:2013-08-06 06:18:35

标签: php jquery select datepicker

这是我的视图(roster.php)

<link href="http://cdn.kendostatic.com/2012.3.1024/styles/kendo.common.min.css" rel="stylesheet" type="text/css" />
<link href="http://cdn.kendostatic.com/2012.3.1024/styles/kendo.default.min.css" rel="stylesheet" type="text/css" />
<link href="http://cdn.kendostatic.com/2012.3.1024/styles/kendo.dataviz.min.css" rel="stylesheet" type="text/css" />
<link href="http://cdn.kendostatic.com/2012.3.1024/styles/kendo.mobile.all.min.css" rel="stylesheet" type="text/css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://cdn.kendostatic.com/2012.3.1024/js/kendo.all.min.js"></script>

<form action="time_model.php" method="post">
        From: <input type="text" id="datepicker"  name="date_from"/> <br/><br/>
        To: <input type="text" id="datepicker2" name="date_to" />
        </form>
<input type="submit">
<script>
    $(document).ready(function () {
        $.get('<?=base_url()?>index.php/roster/get_emprecord', function(data) {
            if ( data.substring(0,1) == '0' ) return true;
            var emp_roster = JSON.parse(data);

            $("#grid").kendoGrid({
                dataSource: {
                    data: team_dtr,
                    pageSize: 20
                },
                groupable: true,
                sortable: {
                    mode: "multiple",
                    allowUnsort: true
                },
                pageable: {
                    buttonCount: 6
                },
                scrollable: false,
                columns: [

                    {
                        field: "user_name",
                        title: "Name",
                    },

                    {
                        field: "entry_type",
                        title: "Entry Type",
                    },

                    {
                        field: "entry_datetime",
                        title: "Date",
                    }
            ]
            });
        });
    }); 
$("#datepicker").kendoDatePicker();
$("#datepicker2").kendoDatePicker();
</script>

在我看来,我正在使用日期选择器选择2个日期(date_from,date_to)。现在我正在尝试向我的查询(模型)发送在我的视图中选择的日期。但它似乎没有抓住它。

这是我的MODEL(time_model.php)

public function get_roster($end= '($_POST[date_from])', $start= '$POST[date_to]' )
{
$sql="SELECT user_name, entry_type, entry_datetime
FROM time_entries
WHERE entry_datetime 
BETWEEN' ".$start." ' AND ' ".$end." '
ORDER BY entry_datetime";

    $query = $this->db->query($sql);
    $result = $query->result_array();

    if ($result) return $result;
    return false;
}

这是我的CONTROLLER(roster.php)

public function get_emprecord()
 {
  $data['title'] = "Roster";
  $result = $this->time_model->get_employee_record($data)
if ( $result ) $data['dump'] = json_encode($result);
else $data['dump'] = "0 Request can not be completed right now.";

$this->load->view(roster'', $data);
  }

当我单独在我的控制器中尝试时,它会说'0请求现在无法完成'。我认为我投入查询的帖子没有被捕获,因为它给出了0结果。当然,我正在做的事情不在这里:(。

我只想要从我的数据库中获取记录,范围从我视图中选择的datepicker(date_from,date_to)。然后从类似的视图返回结果。我看到很多问题似乎都是这样,但我不明白程序是如何完成的。 T_T。提前感谢那些可以帮助并启发我的错误的人。

2 个答案:

答案 0 :(得分:0)

试试这个:

public function get_roster()
{
    $sql="SELECT user_name, entry_type, entry_datetime
    FROM time_entries
    WHERE entry_datetime 
    BETWEEN' '{$_POST['date_from']}' AND '{$_POST['date_to']}'
    ORDER BY entry_datetime";

    $query = $this->db->query($sql);
    $result = $query->result_array();

    if ($result) return $result;
    return false;
}

答案 1 :(得分:0)

试试这个

$ _ POST是通过HTTP POST方法传递给当前脚本的关联变量数组。如果你想访问你有权访问的变量,比如$ _POST ['date_form']。

因此您可以直接将帖子用于查询。

$sql="SELECT user_name, entry_type, entry_datetime
FROM time_entries
WHERE entry_datetime 
BETWEEN '".$_POST['date_form']."' AND ' ".$_POST['date_to']."'
ORDER BY entry_datetime";

确保日期格式应为mysql格式,即(YYY-mm-dd)

参考:http://php.net/manual/en/reserved.variables.post.php