PHP - 将 mysql 时间戳转换为显示网格

标签 php mysql timestamp

我很纠结这个。 我有一个充满“预订”的 MySQL 数据库,我正在尝试构建一个网格来显示约会的可用性。

对于每个条目,我都有一个开始时间和结束时间,格式如下: YYYY-MM-DD HH:MM:SS(即 2015-06-17 12:00:00)。

我正在寻找将这些条目转换为当天显示网格的方法,其中预订时间(用一种颜色)被屏蔽掉,非预订时间用不同颜色屏蔽。

示例:如果我的 sql 查询返回一个条目,开始时间为中午 12 点,结束时间为下午 2 点,则创建的网格将如下所示:

enter image description here

不好的例子,但可以理解这个想法。

我会包括我尝试过的例子,但老实说,我不知道从哪里开始来完成这个。 - 我可以轻松地提取数据,让它像我的例子一样显示出来,这让我卡住了。

我不是在寻找完成的代码或任何人为我做我的工作,只是朝着正确的方向插入如何将时间变成像我的例子一样的东西。

非常感谢!

最佳答案

您似乎想要呈现预订时间网格。好的,我们走。

  • 我将从定义可能的预订时间开始。
  • 然后我会检查请求:用户请求是一周还是一天。 在示例中,我使用了周 View 。
  • 然后 render_reservation_table() 使用定义的预订时间获取一周(或一天),并在迭代这些时间时询问您的数据库,如果本周/日期/时间有一个条目 read_reservation( )
  • 如果存在条目:将其(详细信息)渲染为红色,否则将“点击预订”渲染为绿色。

关键是渲染数据和数据库数据的对比。 根据渲染数据(周、日、时间)查询数据库。 您已经写过您“可以轻松提取数据”。您将使用渲染数据构建时间戳,然后在数据库中查询一个(或多个)条目:

SELECT * FROM events WHERE `date` BETWEEN '2015-01-01 09:00:01' AND '2015-01-01 11:59:59'

有很多方法可以改善这一点。特别是 read_reservation() 函数稍后将包含数据库选择查询。您可以在第一次调用该函数时查询一天或一周,而不是在渲染期间再次调用该函数时处理数据和时间查找的结果集。

这应该让你开始:

<?php

// (1) Define the possible reservation times. Syntax: 'TimeStart-TimeEnd'

$reservation_times = ['09-10', '10-11', '11-12', '12-13', '13-14', '14-15', '15-16', '16-17'];

// (2) What is the request? 
//     Week Display / Day display - $week = $_GET['week'];
//     Hardcoded for demo purpose.

$week = 20;

/**
 * Renders a reservation table for a certain week
 */
function render_reservation_table($week, $reservation_times)
{
    echo '<table><colgroup span="1" id="reservation_time_colgroup"></colgroup><colgroup span="7" id="reservation_day_colgroup"></colgroup>';

    foreach($reservation_times as $time)
    {
        echo '<tr><th class="reservation_time_th">' . $time . '</th>';

        $i = 0;

        while($i < 7)
        {
            $i++;

            echo '<td><div class="reservation_time_div">';
            echo '<div class="reservation_time_cell_div" id="div:' . $week . ':' . $i . ':' . $time . '" onclick="void(0)">';
            echo read_reservation($week, $i, $time);
            echo '</div></div></td>';
        }
        echo '</tr>';
    }
    echo '</table>';
}

function read_reservation($week, $i, $time)
{     
    // ==> ask database and compare

    // here hardcoded for demo: this is week 20, day 2, time 10-11
    if($week === 20 && $i === 2 && $time === '10-11') {

        // Booked
        echo '<div style="background:red;">Already booked.</div>';

    } else {

        // Not booked.
        echo '<div style="background:lightgreen;">Click to book.</div>';

    }
}

render_reservation_table($week, $reservation_times);

看起来像这样(周 View ):

enter image description here

关于PHP - 将 mysql 时间戳转换为显示网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30896801/

相关文章:

php - 游戏的分数基于客户端倒计时。如何防弹呢?

php - 查询wordpress数据库

php - WordPress 自定义不起作用 - load-scripts.php 错误

php - 尝试显示 BLOB 时显示损坏的图像图标

json - 使用云函数时,来自 firestore 的时间戳被转换为 Map

php - 电子商务 |设置账单字段值

android - 从android Activity 将日期存储在sql数据库中

mysql - 从基于数据库的数据获取数据并显示在所选值的文本框中。拉拉维尔 5.7

R时间戳差异打印

iPhone:来自 CLLocationManager 的时间