我在表单中使用了日期范围选择器如何禁用从 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 数据库中获取的特定日期范围的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jQuery 日期选择器中为禁用日期添加工具提示?

如何在 Twitter 引导日期选择器中禁用结束日期范围?

Angular:如何配置日期选择器以禁用多个日期范围?

角度日期范围选择器 - 如何在已经使用 min 属性将最小日期设置为今天时禁用同一天

如何使用 Material ui reactjs 禁用从今天开始的过去日期?

在引导日期选择器中禁用过去的日期