Php 在表中列出一周中每一天的事件

Php 在表中列出一周中每一天的事件,php,html,conceptual,Php,Html,Conceptual,尽管所讨论的代码是PHP,但我需要再看一眼、一个通用算法、伪代码或类似的解决方案 我有一组具有以下属性的对象($events): 事件名称 date\u from date\u to 我有一张平日的桌子: Mon Tue Wed Thu Fri Sat Sun Starts * * * * * * * Ends * * * * * *

尽管所讨论的代码是PHP,但我需要再看一眼、一个通用算法、伪代码或类似的解决方案

我有一组具有以下属性的对象(
$events
):

  • 事件名称
  • date\u from
  • date\u to
我有一张平日的桌子:

         Mon   Tue   Wed   Thu   Fri   Sat   Sun  
Starts    *     *     *     *     *     *     *
Ends      *     *     *     *     *     *     *
HTML中的相同表格:

<table>
      <thead>
        <tr>
          <th></th>
          <th>Mon</th>
          <th>Tue</th>
          <th>Wed</th>
          <th>Thu</th>
          <th>Fri</th>
          <th>Sat</th>
          <th>Sun</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>Starts</strong></td>
          <td>*</td>
          <td>*</td>
          <td>*</td>
          <td>*</td>
          <td>*</td>
          <td>*</td>
          <td>*</td>
        </tr>
        <tr>
          <td><strong>Ends</strong></td>
          <td>*</td>
          <td>*</td>
          <td>*</td>
          <td>*</td>
          <td>*</td>
          <td>*</td>
          <td>*</td>
        </tr>
      </tbody>
    </table>
对于周二的
,它将类似于:

<td>
  foreach($events as $event) {
    if($event->date_to == $week_start + 1) {  //Tuesday is start of the week + 1 day
      echo $event->name;
    }
  }
</td>

foreach($events作为$event){
如果($event->date\u to==$week\u start+1){//星期二是本周的开始时间+1天
echo$event->name;
}
}
…以此类推,但其中14个
foreach
,和
if
,每天乘以两行,可能是最愚蠢的:)。当然,对于
结束
行,我将
date\u与
属性与所讨论的日期进行比较

有人有概念上的答案吗?如何更好地解决这个问题

另外,我在Laravel,PHP MVC框架中工作,所以我正在控制器中构建一个集合,并将其传递给视图。日期是实例,它是DateTime的PHP API扩展,因此可以使用各种方便的方法来确定日期(
addDay()
startOfWeek()
,等等)。如有必要,可以更改所讨论的HTML以及
$events
集合的结构

提前感谢您的想法

编辑:在表格单元格(
)的每个
事件名称后面加逗号(
除最后一个之外)可获得额外积分。

1)仅php模板语言解决方案

小枝:

{% set days = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"] %}

{% set event_1 = {"name":"event_1","date_from" : "monday", "date_to" : "monday"} %}
{% set event_2 = {"name":"event_2","date_from" : "friday", "date_to" : "thursday"} %}
{% set event_3 = {"name":"event_3","date_from" : "wednesday", "date_to" : "tuesday"} %}
{% set event_4 = {"name":"event_4","date_from" : "saturday", "date_to" : "monday"} %}
{% set event_5 = {"name":"event_5","date_from" : "sunday", "date_to" : "thursday"} %}

{% set event_list = [event_1, event_2, event_3, event_4, event_5] %}


<div class="container">
    <table class="table table-striped">
        <thead>
        <tr>
            {% for day in days %}
                <th>{{ day }}</th>
            {% endfor %}
        </tr>
        </thead>
        <tbody>
            <tr>
                {% for day in days %}
                    <td>
                        {% for ev in event_list %}
                            {% if ev.date_from == day %}
                                {{ ev.name }}
                            {% endif %}
                        {% endfor %}
                    </td>
                {% endfor %}
            </tr>
            <tr>
                {% for day in days %}
                    <td>
                        {% for ev in event_list %}
                            {% if ev.date_to == day %}
                                {{ ev.name }}
                            {% endif %}
                        {% endfor %}
                    </td>
                {% endfor %}
            </tr>
        </tbody>
    </table>
</div>
<script>
    $(document).ready(function(){

        var event_list = {
            event_1 : {event_name : "event_1", date_from : "monday", date_end : "sunday"},
            event_2 : {event_name : "event_2", date_from : "wednesday", date_end : "tuesday"},
            event_3 : {event_name : "event_3", date_from : "thursday", date_end : "friday"},
            event_4 : {event_name : "event_4", date_from : "saturday", date_end : "saturday"},
            event_5 : {event_name : "event_5", date_from : "friday", date_end : "tuesday"},
            event_6 : {event_name : "event_6", date_from : "monday", date_end : "thursday"}
        };

        var first_row = $("#event_start");
        var second_row = $("#event_end");

        function loop (row, date) {
            row.find("td").each(function(){
                var t = $(this);
                var name = $(this).attr("name");
                $.each( event_list, function( key, value ) {
                    if (value[date] == name) {
                        t.text(value.event_name);
                    }
                });
            });
        }

        loop(first_row, "date_from");
        loop(second_row, "date_end");

    });
</script>
{%set days=[“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”]%}
{%set event_1={“name”:“event_1”,“date_from”:“monday”,“date_to”:“monday”}%}
{%set event_2={“name”:“event_2”,“date_from”:“星期五”,“date_to”:“星期四”}%}
{%set event_3={“name”:“event_3”,“date_from”:“星期三”,“date_to”:“星期二”}%}
{%set event_4={“name”:“event_4”,“date_from”:“星期六”,“date_to”:“星期一”}%}
{%set event_5={“name”:“event_5”,“date_from”:“sunday”,“date_to”:“星期四”}%}
{%set event_list=[event_1、event_2、event_3、event_4、event_5]]
{天百分比中的天百分比}
{{day}
{%endfor%}
{天百分比中的天百分比}
{事件列表%中ev的百分比}
{%if ev.date_from==day%}
{{ev.name}
{%endif%}
{%endfor%}
{%endfor%}
{天百分比中的天百分比}
{事件列表%中ev的百分比}
{%if ev.date_to==day%}
{{ev.name}
{%endif%}
{%endfor%}
{%endfor%}
2)php模板语言+jQuery解决方案

小树枝

{% set days = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"] %}


<div class="container">
    <table class="table table-striped">
        <thead>
        <tr>
            {% for day in days %}
                <th>{{ day }}</th>
            {% endfor %}
        </tr>
        </thead>
        <tbody>
            <tr id="event_start">
                {% for day in days %}
                    <td name="{{ day }}">
                    </td>
                {% endfor %}
            </tr>
            <tr id="event_end">
                {% for day in days %}
                    <td name="{{ day }}">
                    </td>
                {% endfor %}
            </tr>
        </tbody>
    </table>
</div>
{%set days=[“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”]%}
{天百分比中的天百分比}
{{day}
{%endfor%}
{天百分比中的天百分比}
{%endfor%}
{天百分比中的天百分比}
{%endfor%}
jquery:

{% set days = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"] %}

{% set event_1 = {"name":"event_1","date_from" : "monday", "date_to" : "monday"} %}
{% set event_2 = {"name":"event_2","date_from" : "friday", "date_to" : "thursday"} %}
{% set event_3 = {"name":"event_3","date_from" : "wednesday", "date_to" : "tuesday"} %}
{% set event_4 = {"name":"event_4","date_from" : "saturday", "date_to" : "monday"} %}
{% set event_5 = {"name":"event_5","date_from" : "sunday", "date_to" : "thursday"} %}

{% set event_list = [event_1, event_2, event_3, event_4, event_5] %}


<div class="container">
    <table class="table table-striped">
        <thead>
        <tr>
            {% for day in days %}
                <th>{{ day }}</th>
            {% endfor %}
        </tr>
        </thead>
        <tbody>
            <tr>
                {% for day in days %}
                    <td>
                        {% for ev in event_list %}
                            {% if ev.date_from == day %}
                                {{ ev.name }}
                            {% endif %}
                        {% endfor %}
                    </td>
                {% endfor %}
            </tr>
            <tr>
                {% for day in days %}
                    <td>
                        {% for ev in event_list %}
                            {% if ev.date_to == day %}
                                {{ ev.name }}
                            {% endif %}
                        {% endfor %}
                    </td>
                {% endfor %}
            </tr>
        </tbody>
    </table>
</div>
<script>
    $(document).ready(function(){

        var event_list = {
            event_1 : {event_name : "event_1", date_from : "monday", date_end : "sunday"},
            event_2 : {event_name : "event_2", date_from : "wednesday", date_end : "tuesday"},
            event_3 : {event_name : "event_3", date_from : "thursday", date_end : "friday"},
            event_4 : {event_name : "event_4", date_from : "saturday", date_end : "saturday"},
            event_5 : {event_name : "event_5", date_from : "friday", date_end : "tuesday"},
            event_6 : {event_name : "event_6", date_from : "monday", date_end : "thursday"}
        };

        var first_row = $("#event_start");
        var second_row = $("#event_end");

        function loop (row, date) {
            row.find("td").each(function(){
                var t = $(this);
                var name = $(this).attr("name");
                $.each( event_list, function( key, value ) {
                    if (value[date] == name) {
                        t.text(value.event_name);
                    }
                });
            });
        }

        loop(first_row, "date_from");
        loop(second_row, "date_end");

    });
</script>

$(文档).ready(函数(){
变量事件列表={
事件1:{事件名称:“事件1”,日期从:“星期一”,日期结束:“星期日”},
事件2:{事件名称:“事件2”,日期从:“星期三”,日期结束:“星期二”},
事件3:{事件名称:“事件3”,日期从:“星期四”,日期结束:“星期五”},
事件4:{事件名称:“事件4”,日期从:“星期六”,日期结束:“星期六”},
事件5:{事件名称:“事件5”,日期从:“星期五”,日期结束:“星期二”},
事件6:{事件名称:“事件6”,日期从:“星期一”,日期结束:“星期四”}
};
var第一行=$(“事件开始”);
第二行变量=$(“事件结束”);
函数循环(行、日期){
row.find(“td”).each(函数(){
var t=$(本);
var name=$(this.attr(“name”);
$。每个(事件列表、函数(键、值){
如果(值[日期]==名称){
t、 文本(值、事件名称);
}
});
});
}
循环(第一行,“日期自”);
循环(第二行,“日期结束”);
});
1)php模板语言专用解决方案

小枝:

{% set days = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"] %}

{% set event_1 = {"name":"event_1","date_from" : "monday", "date_to" : "monday"} %}
{% set event_2 = {"name":"event_2","date_from" : "friday", "date_to" : "thursday"} %}
{% set event_3 = {"name":"event_3","date_from" : "wednesday", "date_to" : "tuesday"} %}
{% set event_4 = {"name":"event_4","date_from" : "saturday", "date_to" : "monday"} %}
{% set event_5 = {"name":"event_5","date_from" : "sunday", "date_to" : "thursday"} %}

{% set event_list = [event_1, event_2, event_3, event_4, event_5] %}


<div class="container">
    <table class="table table-striped">
        <thead>
        <tr>
            {% for day in days %}
                <th>{{ day }}</th>
            {% endfor %}
        </tr>
        </thead>
        <tbody>
            <tr>
                {% for day in days %}
                    <td>
                        {% for ev in event_list %}
                            {% if ev.date_from == day %}
                                {{ ev.name }}
                            {% endif %}
                        {% endfor %}
                    </td>
                {% endfor %}
            </tr>
            <tr>
                {% for day in days %}
                    <td>
                        {% for ev in event_list %}
                            {% if ev.date_to == day %}
                                {{ ev.name }}
                            {% endif %}
                        {% endfor %}
                    </td>
                {% endfor %}
            </tr>
        </tbody>
    </table>
</div>
<script>
    $(document).ready(function(){

        var event_list = {
            event_1 : {event_name : "event_1", date_from : "monday", date_end : "sunday"},
            event_2 : {event_name : "event_2", date_from : "wednesday", date_end : "tuesday"},
            event_3 : {event_name : "event_3", date_from : "thursday", date_end : "friday"},
            event_4 : {event_name : "event_4", date_from : "saturday", date_end : "saturday"},
            event_5 : {event_name : "event_5", date_from : "friday", date_end : "tuesday"},
            event_6 : {event_name : "event_6", date_from : "monday", date_end : "thursday"}
        };

        var first_row = $("#event_start");
        var second_row = $("#event_end");

        function loop (row, date) {
            row.find("td").each(function(){
                var t = $(this);
                var name = $(this).attr("name");
                $.each( event_list, function( key, value ) {
                    if (value[date] == name) {
                        t.text(value.event_name);
                    }
                });
            });
        }

        loop(first_row, "date_from");
        loop(second_row, "date_end");

    });
</script>
{%set days=[“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”]%}
{%set event_1={“name”:“event_1”,“date_from”:“monday”,“date_to”:“monday”}%}
{%set event_2={“name”:“event_2”,“date_from”:“星期五”,“date_to”:“星期四”}%}
{%set event_3={“name”:“event_3”,“date_from”:“星期三”,“date_to”:“星期二”}%}
{%set event_4={“name”:“event_4”,“date_from”:“星期六”,“date_to”:“星期一”}%}
{%set event_5={“name”:“event_5”,“date_from”:“sunday”,“date_to”:“星期四”}%}
{%set event_list=[event_1、event_2、event_3、event_4、event_5]]
{天百分比中的天百分比}
{{day}
{%endfor%}
{天百分比中的天百分比}
{事件列表%中ev的百分比}