Php 日期范围搜索

Php 日期范围搜索,php,mysql,sql,search,date-range,Php,Mysql,Sql,Search,Date Range,嗨,我在我的日期范围搜索中遇到了问题,因为它获取了错误的结果 例如:我正在搜索从2013年1月4日到2013年2月4日的数据,假设结果将显示从2013年1月4日到2013年2月4日这些日期的数据,但它获取了错误的数据 这是我的表格 <form method="post"id="myform" action="index.php" > <label for="from">Sales Date from :</label> <

嗨,我在我的日期范围搜索中遇到了问题,因为它获取了错误的结果

例如:我正在搜索从2013年1月4日到2013年2月4日的数据,假设结果将显示从2013年1月4日到2013年2月4日这些日期的数据,但它获取了错误的数据

这是我的表格

<form  method="post"id="myform" action="index.php" >
        <label for="from">Sales Date from :</label>
        <input name="startfrom" type="text" id="startfrom" class="datepicker form-control"/>
        <label for="to">Sales Date to :</label>
        <input name="to" type="text" id="end" class="datepicker form-control"/>
        <label>Outlet Name:</label>
        <select name="OutletName" class="input-sm form-control">
            <option value="">--</option>
            <?php
            error_reporting(0);
            include 'config.php';
                $sql = "SELECT * FROM ".$SETTINGS["data_table"]." GROUP BY OutletName ORDER BY OutletName";
                $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
                while ($row = mysql_fetch_assoc($sql_result)) {
                    echo "<option value='".$row["OutletName"]."'".($row["OutletName"]==$_REQUEST["OutletName"] ? " selected" : "").">".$row["OutletName"]."</option>";
                }
            ?>
        </select>
        <label>Category:</label>
        <select name="Category" class="input-sm form-control ">
            <option value="">--</option>
            <?php
            error_reporting(0);
            $sql = "SELECT * FROM ".$SETTINGS["data_table"]." GROUP BY Category ORDER BY Category";
                $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
                while ($row = mysql_fetch_assoc($sql_result)) {
                    echo "<option value='".$row["Category"]."'".($row["Category"]==$_REQUEST["Category"] ? " selected" : "").">".$row["Category"]."</option>";
                }
            ?>
        </select></br>
        <label>Product Code:</label>
        <select name="ProductCode" class="input-sm form-control ">
            <option value="">--</option>
            <?php
            error_reporting(0);
            $sql = "SELECT * FROM ".$SETTINGS["data_table"]." GROUP BY ProductCode ORDER BY ProductCode";
                $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
                while ($row = mysql_fetch_assoc($sql_result)) {
                    echo "<option value='".$row["ProductCode"]."'".($row["ProductCode"]==$_REQUEST["ProductCode"] ? " selected" : "").">".$row["ProductCode"]."</option>";
                }
            ?>
        </select></br>
        <button type="submit" class="btn  btn-primary btn-block" name="submit" id="submit"  />FIND&nbsp;<span class="glyphicon glyphicon-search"></span></button>
这是我的搜索查询

if ($_REQUEST["Category"]<>'') {
                                    $search_Category = " AND Category='".mysql_real_escape_string($_REQUEST["Category"])."'";   
                                }
                                if ($_REQUEST["ProductCode"]<>'') {
                                    $search_ProductCode = " AND ProductCode='".mysql_real_escape_string($_REQUEST["ProductCode"])."'";  
                                }
                                if ($_REQUEST["OutletName"]<>'') {
                                    $search_OutletName = " AND OutletName='".mysql_real_escape_string($_REQUEST["OutletName"])."'"; 
                                }

                                $search_groupby = "GROUP BY CategoryID,OracleCategory,ProductCode ORDER BY CategoryID,OracleCategory,ProductCode ";

                                if ($_REQUEST["startfrom"]<>'' and $_REQUEST["end"]<>'') {
                                    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE SalesDate >= '".mysql_real_escape_string($_REQUEST["startfrom"])."'AND SalesDate <='".mysql_real_escape_string($_REQUEST["end"])."'".$search_OutletName.$search_Category.$search_ProductCode;
                                } else if ($_REQUEST["startfrom"]<>'') {
                                    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE SalesDate >= '".mysql_real_escape_string($_REQUEST["startfrom"])."'".$search_OutletName.$search_Category.$search_ProductCode;
                                } else if ($_REQUEST["end"]<>'') {
                                    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE SalesDate <= '".mysql_real_escape_string($_REQUEST["end"])."'".$search_OutletName.$search_Category.$search_ProductCode;
                                }else {
                                    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE ECRNo>0 ".$search_OutletName.$search_Category.$search_ProductCode;
                                }
谢谢你的改变

<input name="to" type="text" id="end" class="datepicker form-control"/>
如果您正在使用GROUP BY on salesDate字段,请以这种方式使用GROUP BY UNIX_TIMESTAMPstr_to_dateSalesDate,'%d/%m/%Y'

编辑2

替换所有发生的

SalesDate到UNIX\u TIMESTAMPstr\u到\u dateSalesDate,'%d/%m/%Y' 和 $\u请求[startfrom]到 strottimemysql\u real\u escape\u string$\u请求[startfrom] 和 $\u请求[结束]到
STROTIMEYMySQL\u real\u escape\u string$\u REQUEST[startfrom]

谢谢我编辑了它没有,但还有一个问题我的SalesDate是varchar如何转换它的datetime或date?这里是$sql=SELECT CategoryID,oracleContegory,str\u to\u dateSalesDate,'%d/%m/%Y',OutletName,ProductCode,Category,MealType,SUMQuantity AS Quantity1,SUMNetPrice作为来自.$SETTINGS[数据表]的NetPrice 1。其中str_to_datesaledate,'%d/%m/%Y'>='.date'd-m-Y',strottimemysql_real_escape_string$\u REQUEST[startfrom].'和str_to_datesaledate,'%d/%m/%Y'如果date'd-m-Y',strottimemysql_real_escape_string$\u REQUEST[startfrom]和date'd-m-Y',strottimemysql_real_escape_字符串$\u REQUEST[end],我也会更改此值{如您所说,请将日期'd-m-Y',…更改为日期'd/m/Y'…以及$search_groupby上的内容?此处$search_groupby=按类别分组ID,OracleCategory,ProductCode ORDER BY CategoryID,OracleCategory,ProductCode;
<input name="end" type="text" id="end" class="datepicker form-control"/>
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE UNIX_TIMESTAMP(str_to_date(SalesDate, '%d/%m/%Y')) >= '".strtotime(mysql_real_escape_string($_REQUEST["startfrom"]))."' AND UNIX_TIMESTAMP(str_to_date(SalesDate, '%d/%m/%Y'))<='".strtotime(mysql_real_escape_string($_REQUEST["startfrom"]))."'".$search_OutletName.$search_Category.$search_ProductCode;