我正在创建一个用于提交报告的内部站点。有问题的部分应创建链接以填写过去 7 天内所有未归档的报告(以防止列表过长)。
出于说明目的,以下是数据库中一些报告的极其简化的示例:
id || date
1 || 2013-7-1 00:00:01
2 || 2013-7-2 00:00:01
3 || 2013-7-3 00:00:01
每天只能提交一份报告,并且用户只能提交 7 天或更早的报告。所以这就是当用户进入菜单时需要发生的事情。
- 获取具有最新时间戳的报告。
- 报告是否在过去 7 天内提交了一天?
- 如果是:为上次报告和今天之间(但不包括)之间的所有日子创建潜在报告的链接。
- 如果否:创建指向过去 7 天潜在报告的链接。
使用上表,最后提交的日期是 7 月 3 日(一周前) - 今天是 7 月 23 日 - 所以我想为 7 月 16 日 - 7 月 22 日的报告创建链接。我已经编写了可以让我走到这一步的代码。
报告类
class Report {
public $id;
public $location;
public $user;
public $date;
public $problems_encountered;
public $problems_resolved;
public $problems_description;
public function __construct($location, $user, $date, $problems_encountered, $problems_resolved, $problems_description, $id=0) {
$this->location = $location;
$this->user = $user;
$this->date = $date;
$this->problems_encountered = $problems_encountered;
$this->problems_resolved = $problems_resolved;
$this->problems_description = $problems_description;
$this->id = $id;
}
public static function GetMostRecent() {
$m = getMyConnection();
$q = "SELECT * FROM `uptime_tickets` ORDER BY `date` DESC LIMIT 1";
$r = $m->query($q);
$row = $r->fetch_assoc();
if (is_array($row)) {
$report = new Report(
$row['location'],
$row['user'],
$row['date'],
$row['problems_encountered'],
$row['problems_resolved'],
$row['problems_description'],
$row['id']
);
$m->close();
return $report;
}
$m->close();
return false;
}
public function was_submitted_in_last_7_days($report) {
$start = strtotime("-1 week");
$end = strtotime("today");
return ((strtotime($report->date) >= $start) && (strtotime($report->date) <= $end));
}
}
使用我已经定义的 2 个函数,确定报告是否在上周提交很简单:
$report = Report::GetMostRecent();
if (!$report->was_submitted_in_last_7_days()) {
// Create links for the last 7 days.
}
没什么大不了。但是,如果该报告在过去 7 天内下降,我无法确定该怎么做。假设前面提到的表格中有第 4 行:
id || date
4 || 2013-7-19 00:00:01
如何以编程方式创建指向 7 月 20 日、21 日和 22 日新报告的链接?
为了澄清:
我所指的链接只是HTTP GET
请求 - 它们看起来像:
<a href="new-report.php?location=3&date=2013-7-20">Saturday, July 20th</a>
如果我在这里介绍了太多细节,我深表歉意,但我害怕没有涵盖我想要完成的整个范围(这相对简单 - 但很难解释)。
编辑#1 我给出了太多的背景,而没有足够的问题 - 这是一个更相关的描述:
我能做什么 目前,我可以确定上次提交的报告是否是过去 7 天内的某个日期。
我需要做什么 如果报告是在过去 7 天内提交的(如我上面的示例),我需要以编程方式确定最后提交日期和昨天之间的天数。(在上面的示例中,我需要知道如何以编程方式到达日期 2013-7-20、2013-7-21 和 2013-7-22)