如何在php中按周显示网格中的天数?

如何在php中按周显示网格中的天数?,php,Php,我试图以网格或表格的形式显示一个月的天数。我正在考虑使用Bulma或bootstrap来处理网格/表。网格基于5行7列。我不知道如何实施一周中正确的几天。每周应按一个div分组,并在div内注明日期。这是我迄今为止得到的: <?php $row = ''; $startDate = 12/30/2018; $numDays = 35; $datesArr = array(); $weekCounter = 1; for ($i = 0; $i <= n

我试图以网格或表格的形式显示一个月的天数。我正在考虑使用Bulma或bootstrap来处理网格/表。网格基于5行7列。我不知道如何实施一周中正确的几天。每周应按一个div分组,并在div内注明日期。这是我迄今为止得到的:

  <?php

  $row = '';
  $startDate = 12/30/2018;
  $numDays = 35;
  $datesArr = array();
  $weekCounter = 1;

  for ($i = 0; $i <= numDays; i++) {
     $row .= '<div>';
     $date = date('m/j/Y', strtotime("$startDate +$i days"));
     $datesArr[] = $date;

     if ($i % 8 == 0) {
        $row .= '<p>Week ' . $weekCounter++ . '</p>';
     } else {
        $row .= '<p>'.$date . ' - ' . date('l'), strtotime($date)). '</p>';
     }

     $row .= '</div>';
  }
  echo $row;
 ?>



< /代码> 您也可以考虑使用jQuery UI数据包。您可以使用AJAX获得开始日期和天数。然后画日历

$(函数(){
函数getDateInfo(){
$.getJSON(“dateInfo.php”,函数(数据){
drawCal(data.startDate,data.numDays,$(“.calendar”);
})
}
函数drawCal(sd、nd、tObj){
var format=“mm/dd/yy”;
var min=$.datepicker.parseDate(格式,sd);
var max=新日期();
最大设置日期(最小getDay()+nd);
控制台日志(sd,最大值);
tObj.html(“”);
托布J.日期选择器({
日期格式:格式,
minDate:min,
maxDate:max,
numberOfMonths:[3,1]
});
}
提款(“2018年12月31日”,35美元(“日历”);
});
.ui日期选择器组{
宽度:100%;
}


< /代码> 您也可以考虑使用jQuery UI数据包。您可以使用AJAX获得开始日期和天数。然后画日历

$(函数(){
函数getDateInfo(){
$.getJSON(“dateInfo.php”,函数(数据){
drawCal(data.startDate,data.numDays,$(“.calendar”);
})
}
函数drawCal(sd、nd、tObj){
var format=“mm/dd/yy”;
var min=$.datepicker.parseDate(格式,sd);
var max=新日期();
最大设置日期(最小getDay()+nd);
控制台日志(sd,最大值);
tObj.html(“”);
托布J.日期选择器({
日期格式:格式,
minDate:min,
maxDate:max,
numberOfMonths:[3,1]
});
}
提款(“2018年12月31日”,35美元(“日历”);
});
.ui日期选择器组{
宽度:100%;
}


我认为我的实现是不正确的,我错过了第一周后的第一个星期一。我刚刚在回答中补充了这一点。而且,我现在看到的是,这只是一个大div,将整个事情包装起来,而不是将其分为几个星期。正在寻找一种好的方式,将每周都放在自己的div中。谢谢。你会建议一种不同的实现方法吗?还是你认为我的第一种方法是有效的?由于我个人的时间限制,我几乎是在尽可能快地解决这个问题。它应该相当简单,特别是如果你添加一些条件,比如
if(date(“l”),strotime($date))==“Monday”)
,然后在顶部添加一个div,如果日期是星期天,那么添加一个结束div标记。我认为我的实现是错误的,我错过了第一周后的第一个星期一。我只是在回答中添加了这个。而且,我现在看到的是,这只是一个大div,将整件事包装起来,而不是将其分解为几个星期。正在寻找一种好的方式,将每周都放在自己的div中。谢谢。你会建议一种不同的实现方法吗?还是你认为我的第一种方法是有效的?由于我个人的时间限制,我几乎是在尽可能快地解决它。这应该是相当简单的,特别是如果您添加一些条件,如
if(date(“l”),strotime($date))==“Monday”)
然后在顶部添加一个div,如果日期是Sunday,则添加一个结束div标记。欢迎使用堆栈溢出。其中大部分将由CSS而不是PHP处理。我建议用一张桌子来扩大视野。可能想看看jQueryUIDatePicker,看看它是如何显示的。欢迎来到StackOverflow。其中大部分将由CSS而不是PHP处理。我建议用一张桌子来扩大视野。可能想看看jQueryUIDatePicker,看看它是如何显示的。
<?php

$row = '';
$startDate = '12/30/2018';
$numDays = 35;
$datesArr = array();
$weekCounter = 1;

for ($i = 0; $i <= $numDays; $i++) {

    $date = date('m/j/Y', strtotime("$startDate +$i days"));
    $datesArr[] = $date;

    // New div at start of week
    if (date("l", strtotime($date)) == "Sunday") {
        $row .= "<div style=\"float: left; margin: 10px;\">";
        $row .= '<p>Week ' . $weekCounter++ . '</p>';
    }

    $row .= '<p>'. $date . ' - ' . date("l", strtotime($date)) . '</p>';

    // close div at end of week
    if (date("l", strtotime($date)) == "Saturday") {
        $row .= "</div>"; 
    }

}

echo $row;

?>