将数据放入PHP生成的日历中的“每日一个”单元格中

时间:2011-03-22 17:38:55

标签: php mysql database

我有一个日历,我需要填充从MySQL数据库中提取的数据。

查询响应将是一个引用一个月中几个日期的行数组。我必须将每行的数据放入与其日期对应的数据中。日期信息在MySQL中存储为“datetime”。

将在此处生成将保存数据的日历元素:

for ($day = 1; $day <= $totaldays; $day++) {
    $day_secs = mktime(0,0,0,$month,$day,$year);
    if ($day_secs >= $yesterday) {  
        if ($day_highlight && ($day == $this_day)) {
            print "<td class=\"today\"><span>$day</span><a href=\"CPD_activity_cal_new.php?day=$day&month=$month&year=$year\" class=\"actilink\">Add Activity</a>
            </td>";
        } else {
            print "<td class=\"monthday\"><span>$day</span><a href=\"CPD_activity_cal_new.php?day=$day&month=$month&year=$year\" class=\"actilink\">Add Activity</a></td>";
        }
    } else {
        print "<td class=\"monthday\"><span>$day</span><a href=\"CPD_activity_cal_new.php?day=$day&month=$month&year=$year\" class=\"actilink\">Add Activity</a></td>";
    }
    $day_offset++;

   // start a new row each week // 
    if ($day_offset == 7) {
        $day_offset = 0;
        if ($day < $totaldays) { print "</tr>\n<tr>"; }
    }
}

我有三个主要问题:

  • 我可以使用来自的输出 mysql_fetch_array as-is - 在其他地方 单词,我可以以某种方式运行 通过一个单元格中的数组,和 然后重启循环 正确点几个细胞后 - 或 我必须将它拆分成单独的数组 每个日期(大多数日期) 月份通常是空的) - 和 如果是这样,怎么样?
  • 生成的代码中的位置 day-cells为我做了我的代码 属于?我特别困惑 在这方面由分开 为今天,今天前和今天的循环 今天后
  • 哪种形式的循环最好: 我一直在假设(),但我 一直无法做到 工作(不出所料,考虑到上面的困惑!)。

我对此有任何建议非常感激。

1 个答案:

答案 0 :(得分:0)

我不太确定数据是什么样的,你的逻辑对于我完全理解有点不合适,但这基本上就是我看到它的工作方式:

$result = mysql_query("SELECT *, DAY('date') AS day FROM table WHERE ... yadda, yadda");

// Reorganize the events into an array keyed by day of the month
$events = array();
while ($row = mysql_fetch_array($result)) {
    if (!$events[$row['day']]) $events[$row['day']] = array();
    $events[$row['day']][] = $row;
}

// Build calendar
for ($day = 1; $day <= $totaldays; $day++) {
    // logic for outputting standard calendar format
    if ($events[$day]) {
        foreach ($events[$day] AS $row) {
            // output events
        }
    }
}