У меня есть таблица с событиями и я хочу перечислить все события на основе диапазона дат, который выберет пользователь. Я использую jQuery datepicker, беру значение из него и помещаю в sql запрос, чтобы показать события † † выбранного диапазона дат. Мой формат даты — ГГГГ-мм-дд (например, 2016-05-05), но когда я выбираю дату из средства выбора даты, она выглядит как (ГГГГ-05-05). По какой-то причине он не конвертирует гггг в дату, но делает для месяца и дня. вот мой код:
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<script>
$(function() {
var firstdate = $('#firstdatepicker').datepicker({ dateFormat: 'YYYY- mm-dd' }).val();
});
</script><script>
$(function() {
var lastdate = $('#lastdatepicker').datepicker({ dateFormat: 'YYYY-mm- dd' }).val();
});
</script>
</head>
<body>
<form method="post" action="archive.php">
<p>First Date: <input name = "firstdatepicker" type="text" id="firstdatepicker"></p>
<p>Last Date: <input name = "lastdatepicker" type="text" id="lastdatepicker"></p>
<input type="submit" value="Get Data" name="data"/>
</form>
И мой запрос в php
if(!isset($_POST['filters']) && isset($_POST['firstdatepicker']) && isset($_POST['lastdatepicker']) ){
$firstdate = $_POST['firstdatepicker'];
$lastdate = $_POST['lastdatepicker'];
$query= "SELECT *
FROM Event
WHERE Event.`start_date` BETWEEN '$firstdate' and '$lastdate'
ORDER BY start_date DESC";
}
Изменить на:
var lastdate = $('#lastdatepicker').datepicker({ dateFormat: 'yy-mm-dd' }).val();
а также
var firstdate = $('#firstdatepicker').datepicker({ dateFormat: 'yy-mm-dd' }).val();
Посмотри на: http://api.jqueryui.com/datepicker/#option-dateFormat
YYYY
неверный формат даты, вы должны использовать yy
(две строчные буквы у)
Кроме того, просто предложение — вы должны избежать пользовательского ввода (post
) с какой-то функцией вроде mysqli_real_escape_string
или все, что подходит для вашего соединения SQL
Используйте yy в качестве заполнителя года из 4 цифр:
dateFormat: "yy-mm-dd"