HTML表单:
<form method="POST" action="configuration/raportare/generate_orhideea.php">
<input type="text" name="reportrangeTwo" class="pull-right" style="background: #fff; cursor: pointer; padding: 5px 10px; border: 1px solid #ccc; width: 100%"/><br>
<input type="submit" value="Generează raport">
</form>
表单有一个Jquery数据范围输入,允许我同时选择两个日期。
generate_orhideea.php文件,其中我使用explode()
函数减去每个日期:
//SOME CODE HERE
// Create database variables
require_once "../../configuration/db.php";
$dates = $_POST['reportrangeTwo']; // E.g: 19-01-2017 | 17-02-2017
$first_date = explode(" ", $dates);
$begin = $first_date[0];
$end = $first_date[2];
$rows = mysqli_query($connection, "SELECT * FROM clienti_orhideea WHERE data_inregistrare between '$begin' and '$end' order by data_inregistrare asc");
// loop over the rows, outputting them
while ($row = mysqli_fetch_assoc($rows)) fputcsv($output, $row);
?>
如果$dates = 17-02-2017 | 17-02-2017
它将从今天返回所有值。
如果$dates = 16-02-2017 | 16-02-2017
它将返回昨天的所有值。
如果$dates = 19-01-2017 | 17-02-2017
它应该返回最后30天,但它会返回空白,因为我没有任何以19开头的日期。
但是,如果$dates = 11-02-2017 | 17-02-2017
,它将返回我最近7天的所有值,包括14-01-2017的值。这是超过7天。
可能是什么问题?
答案 0 :(得分:0)
尝试将要比较的日期转换为适合MySQL的格式:
date
如果您有机会将日期存储为varchar数据类型(您应该始终使用datetime
,$rows = mysqli_query($connection,
"SELECT * FROM clienti_orhideea
WHERE STR_TO_DATE(data_inregistrare, '%d-%m-%Y') between
STR_TO_DATE('$begin', '%d-%m-%Y') AND
STR_TO_DATE('$end', '%d-%m-%Y')
ORDER BY STR_TO_DATE(data_inregistrare, '%d-%m-%Y') ASC"
);
或MySQL中的任何其他日期/时间兼容数据类型),您可以试试这个:
<a href="#fr" onclick="language($id,"fr"); return true;">