如何创建基于日期/时间的网页自动更新?



我正在管理一个互联网广播电台网页,我想根据每周的一天/一天的时间为该站的节目添加一个自动入口。例如,周一至周五早上8点的"现在正在玩";标题显示"早餐秀",上午10点,它变成"弗雷德和露西时间",周日下午6点,它显示"赞美诗时间"。等等。

我已经研究出如何使用PHP在网页上获得服务器日期和时间,我猜这应该以某种方式链接到包含所有节目及其时间的SQL数据库,但作为一个完整的PHP和SQL新手,我不知道如何将它们链接在一起(如果确实可能的话)或是否有任何其他额外的编程是必要的。

如果有比我更有资格的人给我指路,我会很感激的。

提前感谢。

更新:-出于各种原因,我选择使用基于Weekdays/Times/Shows数组的编码,最初它似乎工作得很好,直到我意识到,即使我设置了"$hour = date('H: I ');"代码似乎忽略了数组列表中的分钟。根据进一步的建议(见下面的评论),我已经克服了这个问题,下面的代码已经更新,现在正在使用。(注意,我已经展示了一个缩短的测试版本的数组,可以根据需要修改和添加。):-

$shows = [
3 => [
'20:00' => 'Test result A',
'20:30' => 'Test result B',
'21:00' => 'Test result C',
'21:10' => 'Test result D',
'21:30' => 'Test result E'
],
];
$weekday = date('N');
$hour = date('H:i');
$now_plaing = 'Default show';

foreach($shows[$weekday] as $h=>$show) {
if ($h <= $hour) $now_plaing = $show;
printf("On Air Now: %s", $now_plaing);
}

您可以使用如下的简单代码:

<?php
$weekday = date('N');
$hour = date('H');
if (1 <= $weekday && $weekday <= 5) {
// Monday to friday
if ( $hour > 8 ) {
$now_plaing = 'The Breakfast Show';
} elseif ( $hour >=10 ) {
$now_plaing = 'The Fred and Lucy Hour';
} else {
$now_plaing = 'Some good show';
}
} elseif ($weekday == 7) {
// Sunday

if ( $hour > 6 ) {
$now_plaing = 'The Hymn Hour';
} else {
$now_plaing = 'Sunday good show';
}
}
printf("Now Playing: %s", $now_plaing);
在线测试PHP代码

另一种方法是构建显示数组(或从数据库获取),并使用另一个代码:

<?php
$shows = [
1 => [
0 => 'Morning show',
8 => 'The Breakfast Show',
10 => 'The Fred and Lucy Hour'
],
/*** each day shows array ***/
7 => [
0 => 'Sunday good show',
6 => 'The Hymn Hour'
]
];
$weekday = date('N');
$hour = date('H');
$now_plaing = 'Default show';

foreach($shows[$weekday] as $h=>$show) {
if ($h <= $hour) $now_plaing = $show;
}
printf("Now Playing: %s", $now_plaing);

PHP沙箱

使用DB:

<?php
$weekday = date('N');
$hour = date('H:i');
$now_plaing = 'Default show';

$query = "SELECT show_name FROM shows WHERE weekday = ? AND start_at <= ? ORDER BY start_at DESC LIMIT 1;";
$stmt = $pdo->prepare($query);
$stmt->execute([$weekday, $hour]);
$show = $stmt->fetch(PDO::FETCH_ASSOC);
printf("Now at %s playing: %s", $hour, $show['show_name']);

SQL + PHP test

相关内容

  • 没有找到相关文章

最新更新