如何根据 PHP 数据库中的结果在 jQuery 日期选择器上禁用一周中的某些天

Posted

技术标签:

【中文标题】如何根据 PHP 数据库中的结果在 jQuery 日期选择器上禁用一周中的某些天【英文标题】:How to disable certain days of the week on a jQuery datepicker based on a result in a database with PHP 【发布时间】:2019-04-23 01:15:41 【问题描述】:

我有一个 mySQL 数据库,其中包含员工信息表以及他们在一周中的哪几天工作,即周二、周三、周五。

我有一个 HTML 允许用户从中预约,这个想法是基于他们想要 预约 的人,这取决于他们可以从中选择的日期jquery 日期选择器。

html

<form action="" method="post">
     <input type="text" id="Name" name="Name" required="required" value="Name">
     <select id="SelectStylest" name="stylest">

`<?php 

     $sql = mysqli_query($con, "SELECT Name FROM staff") or die(mysqli_error());

      while ($row = $sql->fetch_assoc())

        echo "<option value='".$row['Name']."'>".$row['Name']."</option>";

      

    ?>
    </select>

    <input type="text" name="appointment_date"id="datepicker">

    <input type="submit" name="submit" id="submit" value="Submit" />
</form>

          
          $( function() 
            $( "#datepicker" ).datepicker();
             $('input.timepicker').timepicker(
                minTime: "09:00",
                maxTime: "17:00"
               
             );
            );
           
    

我知道我需要按照查询来搜索数据库以将造型师的名字与朋友联系起来,但之后我就迷路了。我已经用谷歌搜索了这个问题,但没有找到任何关于该主题的内容。

$stylest = $_POST['stylest'];

    $query = mysqli_query($con,"SELECT * FROM staff WHERE Name LIKE '%$stylest%'"); 

【问题讨论】:

【参考方案1】:

您可以使用日期选择器中的beforeShowDay 选项来执行此操作。例如,这仅启用周二周三和周五:

workingDays = [2, 3, 5];

$( "#datepicker" ).datepicker(
  beforeShowDay: function (date) 
      return [workingDays.indexOf(date.getDay()) > -1];
  
);

Date 返回的星期几从星期日=0 到星期六=6。


要将您当前的working_days 格式转换为JS 所需的数字workingDays 数组,您可以使用:

<?php
... // get row from mysqli_fetch_assoc
$weekDays = explode(',', $row['working_days']);
$days = [];
foreach ($weekDays as $d) 
    if ($d == 'Sunday') $days[] = 0;
    if ($d == 'Monday') $days[] = 1;
    // ... and so on

echo '<script type="text/javascript">workingDays='.json_encode($days).'</script>';
?>

【讨论】:

是的,但如果员工的工作天数发生变化,我只希望从数据库中提取他们,这样他们就不必编辑任何代码。我希望在数据库中简单地更改信息。此代码不起作用,因为有不止一名员工。 是的 [2,3,5] 只是一个例子。您必须弄清楚如何从数据库中获取它。如果您需要这部分的帮助,您必须在问题中包含更多信息,例如员工的日程安排如何存储在您的数据库中。 我已经更新了我的问题,所以你现在可以看到我的数据库了 感谢您的帮助 无论 WorkingDays javascript 数组中的数字是多少,现在似乎从星期日开始。【参考方案2】:

这将禁用周末和节假日的选择列表

var disabledDays = ["2018-11-22","2018-11-23","2018-12-24","2018-12-25", "2019-01-01"]

$( "input#ship_date" ).datepicker(   
    changeMonth: true,
    changeYear: true,
    dateFormat: "yy-mm-dd",
    numberOfMonths: 1,
    beforeShowDay: function(date)
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        var day = date.getDay();        
        return [ day != 0 && day != 6 && disabledDays.indexOf(string) == -1 ]
    
);      

【讨论】:

以上是关于如何根据 PHP 数据库中的结果在 jQuery 日期选择器上禁用一周中的某些天的主要内容,如果未能解决你的问题,请参考以下文章

如何将 PHP 数据从数据库发送回 JQuery 并插入到表中

根据使用 php 和 jquery 的下拉选择更改价格变量

如何根据复选框更新数据库值? jQuery的/ PHP / AJAX

如何根据使用 jQuery/AJAX 和 PHP/MySQL 选择的第一个下拉列表填充第二个下拉列表?

JQuery 自动完成结果

如何使用 jQuery 和 PHP 跨多个页面维护 GET Url 参数?