php - 如何根据日期/时间在网页上创建自动更新?
问题描述
我正在管理一个互联网广播电台网页,我想根据星期几/一天中的时间为电台节目添加一个自动条目。例如,周一至周五上午 8 点,“正在播放”标题显示“早餐秀”,上午 10 点更改为“弗雷德和露西小时”,周日下午 6 点显示“赞美诗小时” “”等等等等。
我已经研究出如何使用 PHP 在网页上获取服务器日期和时间,我猜这应该以某种方式链接到包含所有节目及其时间的 SQL 数据库,但作为 PHP 和SQL 我不知道如何将它们链接在一起(如果确实可能的话)或者是否需要任何其他额外的编程。
我会很感激比我更有资格的人指导正确的方向。
提前致谢。
更新:-出于各种原因,我选择使用基于工作日/时间/节目数组的编码,最初它似乎运行良好,直到我意识到即使我设置了“$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
$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
$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']);
推荐阅读
- react-native - 如何为平面列表中的三个项目创建唯一的密钥提取器
- android - 我可以在android studio中同时打开第二个模拟器吗
- android - VerifyError 仅在旧设备上发生
- javascript - 为什么在 navigator.geolocation.getCurrentPosition() 为其分配值并返回它之后我无法访问我的对象中的值?
- typescript - 获取 Typescript 接口属性类型,仅给定属性名称
- typescript - 根据推断的参数类型区分函数返回类型
- java - org.springframework.dao.DataAccessResourceFailureException
- javascript - 检测正在滚动的元素
- c++ - 将此 lambda 表达式传递给 `unique_ptr` 是否可以终身使用?
- r - 闪亮的应用程序不起作用,似乎根本不读取服务器端代码