我在表单中使用了日期范围选择器如何禁用从 MySQL 数据库中获取的特定日期范围
Posted
技术标签:
【中文标题】我在表单中使用了日期范围选择器如何禁用从 MySQL 数据库中获取的特定日期范围【英文标题】:I have used daterange picker in the form how can I disable particular date range which is fetching from MySQL database 【发布时间】:2021-08-27 13:13:35 【问题描述】:我必须禁用多个日期范围。
我用过的函数如下
function myCallback(start, end)
console.log("callback");
$("#dateRange_n").html(
start.format("MM DD, YYYY") + " - " + end.format("MM D, YYYY")
);
let options =
startDate: "12-01-2018",
endDate: "12-01-2023",
minDate: "10-06-2021",
isInvalidDate: function(ele)
var compareDate = moment(ele);
var startDate = moment("12/01/2019", "DD/MM/YYYY");
var endDate = moment("5/06/2021", "DD/MM/YYYY");
return compareDate.isBetween(startDate, endDate);
,
;
$("#dateRange_n").daterangepicker(options, myCallback);
<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" />
<div class="form-group" id="input-dates">
<input class="form-control date-range-picker" id="dateRange_n" type="text" name="dates" placeholder="test...." autocomplete="off" required />
<i class="icon_calendar"></i>
</div>
<?php
$this->db->select('booking_date');
$this->db->where('listing_id', $listing_details['id']);
$records = $this->db->get('booking');
$res = $records->result_array(); ?>
我得到 $res 的地方如下:
Array ( [0] => Array ( [booking_date] => 2021-06-05 - 2021-06-06 ) [1] => Array ( [booking_date] => 2021-06-15 - 2021-06-16 ) [2] => Array ( [booking_date] => 2021-06-17 - 2021-06-18 ) [3] => Array ( [booking_date] => 2021-06-19 - 2021-06-20 ) )
这里我必须从 mysql 数据库中获取日期范围并禁用它
【问题讨论】:
您应该展示如何从 Mysql 获取数据以及如何连接它。 @ikhvjs 我已经编辑了我的问题,你能帮帮我吗 嗨,你实际上有一个数组,你可以使用这个函数compareDate.isBetween(startDate, endDate)
并且数组中的一项假设返回一个boolean
值。您需要做的只是返回所有compareDate.isBetween(startDate, endDate)
的结果。例如,您有 4 个日期对象的数组。你假设有compareDate.isBetween(startDate, endDate)
的4 个结果。得到 4 个结果后,在isInvalidDate
中返回它们,例如return result1 || result2 || result3 || result 4
。希望对你有所帮助。
【参考方案1】:
我必须创建自己的表格,因为您没有在问题中提供表格,但您应该能够更改 SQL 语句以获得正确的开始和结束日期,它会为您工作。
Database Image
<div class="form-group" id="input-dates">
<input class="form-control date-range-picker" id="dateRange_n" type="text" name="dates" placeholder="test...." autocomplete="off" required />
<i class="icon_calendar"></i>
</div>
<?php
if(!isset($_SESSION))
session_start();
$host = "localhost"; /* Host name */
$user = "root"; /* User */
$password = ""; /* Password */
$dbname = "test"; /* Database name */
$conn = mysqli_connect($host, $user, $password,$dbname);
// Check connection
if (!$conn)
die("Connection failed: " . mysqli_connect_error());
$sql = "SELECT * FROM date";
$result = $conn->query($sql);
$row = mysqli_fetch_assoc(mysqli_query($conn,$sql));
$startDate = $row['startDate'];
$endDate = $row['endDate'];
?>
<script>
function myCallback(start, end)
console.log("callback");
$("#dateRange_n").html(
start.format("MM DD, YYYY") + " - " + end.format("MM D, YYYY")
);
let options =
startDate: "12-01-2018",
endDate: "12-01-2023",
minDate: "10-06-2021",
isInvalidDate: function(ele)
var compareDate = moment(ele);
var startDate = moment("<?php echo $startDate ?>", "DD/MM/YYYY");
var endDate = moment("<?php echo $endDate ?>", "DD/MM/YYYY");
return compareDate.isBetween(startDate, endDate);
,
;
$("#dateRange_n").daterangepicker(options, myCallback);
</script>
【讨论】:
非常感谢您的帮助,但我的 sql 结果是行数,所以我如何使用 foreach 作为开始日期和结束日期 您是否多次打印日期范围选择器? @PriyankaPatil @PriyankaPatil 您能否编辑您的问题以向我们展示您如何检索 SQL 结果? 是的,我已经用 mysql 查询和结果集编辑了问题以上是关于我在表单中使用了日期范围选择器如何禁用从 MySQL 数据库中获取的特定日期范围的主要内容,如果未能解决你的问题,请参考以下文章
角度日期范围选择器 - 如何在已经使用 min 属性将最小日期设置为今天时禁用同一天