这几次的课程学习制作一个影视网站,了解了用PHP开发一个网站的基本流程。
PHP开发网站基本流程如下:
1、创建各个资源目录,制作前端页面,HTML、CSS、JS等。
常用文件目录:
static:放置各个资源目录
CSS:放置css文件
images:放置图片
js:放置JS脚本
2、分离公共部分,如头部、底部、侧边栏等等,将公共部分做成单独的php文件,以备各个页面调用。
知识点:
将公共部分找出来,剪切到单独的php文件中,并为其命名。
在需要使用这些公共部分的地方调用这些公共部分,需要使用以下的语句:
include:加载失败,不会终止当前脚本,只会发出警告
require: 加载失败, 终止当前脚本的执行,是致命错误
include_once / require_once: 仅允许加载一次
代表当前文件URL的魔术常量:__DIR__
例子:
require __DIR__ . '/inc/header.php';
这条语句中将inc目录下的header.php文件倒入了当前文件。
3、利用PHP代码将数据填入前端相应的位置。
4、为数据不同结构相同的网页制作数据模板,一个文件即可填入不同数据成为多个页面
本项目中将电影的'mov_id'、'name'、'image'、'detail'、'cate_id'存入数组中,为每个页面循环插入数组中对应的数据,即可做成不同的网站页面。
今天的作业是为每个电影增加评论,代码如下
公共头部代码:
<?php /* 本文件为项目的公共头部 存储了项目的所有数据和头部样式 */ // 影视剧数组 // 把与电影相关的数据封装在$movies数组中,便于调用。包含的项目有:mov_id:电影的ID,name:电影的名称, // image:电影的图片地址,detail:电影的介绍,cate_id:电影的分类ID $movies = [ [ 'mov_id' => 1, 'name' => '倚天屠龙记', 'image' => '1.jpg', 'detail' => '元朝末年,群雄纷起,武林动荡。江湖传闻,得到屠龙刀倚天剑者,可以成为武林至尊,号令天下,莫敢不从。一时间风云四起,引发了武林中对屠龙刀倚天剑的争夺,几段姻缘和孽缘也由此产生。武当派张翠山与天鹰教殷素素… ', 'cate_id' => 1 ], [ 'mov_id' => 2, 'name' => '都挺好', 'image' => '2.jpg', 'detail' => ' 苏母的的突然离世打破了这个家庭外表的平静,意想不到的隐患层层显露,对毫无主见却又自私、小气的苏父的安置和后续生活问题,引发了远在国外的大哥与本城的二哥、小妹三家规律生活的不再。一直被苏母压制的苏父翻… ', 'cate_id' => 1 ], [ 'mov_id' => 3, 'name' => '如果可以这样爱', 'image' => '3.jpg', 'detail' => '一对已婚男女突然徇情自杀,以为可以结束这一切,却不料悲剧才刚刚开始——他们的爱人,耿墨池和白考儿,同时在葬礼上邂逅。面对同样的背叛他们同时选择报复但又同时爱上彼此,注定饱受打击和折磨。然而他们想真心拥… ', 'cate_id' => 1 ], [ 'mov_id' => 4, 'name' => '复仇者联盟4', 'image' => '4.jpg', 'detail' => '《复仇者联盟4:终局之战》将是漫威宇宙“无限传奇”(The Infinity Saga)的终结篇,是漫威电影宇宙十年的一个重要节点,结束部分英雄电影的故事,但也将展开新的剧情,呈现新的更为广阔宏大的宇…', 'cate_id' => 2 ], [ 'mov_id' => 5, 'name' => '波西米亚狂想曲', 'image' => '5.jpg', 'detail' => '弗雷迪·默丘里成名前在机场做行李搬运工。有一天,默丘里毛遂自荐加入杰·泰勒与布莱恩·梅的乐团,恰巧当天原本的主唱辞职,默丘里用自己横跨四个八度的超广音域说服两人,从此开启皇后乐团的摇滚传奇!', 'cate_id' => 2 ], [ 'mov_id' => 6, 'name' => '阿丽塔:战斗天使', 'image' => '6.jpg', 'detail' => '弗雷迪·默丘里成名前在机场做行李搬运工。有一天,默丘里毛遂自荐加入杰·泰勒与布莱恩·梅的乐团,恰巧当天原本的主唱辞职,默丘里用自己横跨四个八度的超广音域说服两人,从此开启皇后乐团的摇滚传奇!', 'cate_id' => 2 ], [ 'mov_id' => 7, 'name' => '情书', 'image' => '7.jpg', 'detail' => '***神户某个飘雪的冬日,渡边博子(中山美穗)在前未婚夫藤井树的三周年祭日上又一次悲痛到不能自已。正因为无法抑制住对已逝恋人的思念,渡边博子在其中学同学录里发现“藤井树” 在小樽市读书时的地址时,依循着…', 'cate_id' => 3 ], [ 'mov_id' => 8, 'name' => '天空之城', 'image' => '8.jpg', 'detail' => '韩书珍将两个女儿的教育问题和对丈夫的贤内助工作都做得井井有条,在天空之城之中也是备受瞩目的女王,但其实书珍一直隐藏着不为人所知的秘密。李秀林是个充满了关怀和情感丰沛的童话作家,在书珍的引导之下成为了天…', 'cate_id' => 3 ], [ 'mov_id' => 9, 'name' => '龙猫', 'image' => '9.jpg', 'detail' => '为了方便妻子草壁靖子养病,草壁达郎决定带着两个女儿草壁皋月和草壁米搬到草壁靖子所在疗养院附近的乡下,父女三人入住了一间年久失修的老房子。小姐妹俩很快发现看似平凡无奇的乡下有很多神奇的事物,无人居住的房…', 'cate_id' => 3 ], ]; // 栏目数组 $cates中存放了栏目的相关信息,cate_id:电影的分类ID,name:电影分类名称,alias:分类的中文名称。 $cates = [ ['cate_id' => 1, 'name' => 'gc', 'alias' => '国产好剧'], ['cate_id' => 2, 'name' => 'om', 'alias' => '欧美猛片'], ['cate_id' => 3, 'name' => 'rh', 'alias' => '日韩新片'], ]; // 网站的系统设置 封装在$system 数组中,方便调用 $system = [ 'sys_id' => 1, 'title' => '私人影院', 'desc' => '收集全网最新最全的影视资源', 'key' => '国产,欧美,日韩', 'copyright' => 'HCG' ]; ?> <!-- 网站公共头部 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="static/css/style.css"> <meta name="description" content="<?php echo $system['desc'] ?>"> <meta name="keywords" content="<?php echo $system['key'] ?>"> <title><?php echo $system['title'] ?></title> </head> <body> <!--头部导航--> <div class="header"> <ul class="nav"> <li><a href="index.php">首页</a></li> <!-- 使用foreach遍历数组$cates,将电影的分类ID写入URL中 --> <!-- 先写一个<li>标签里面包含一个<a>标签,<a>标签中的href为各类电影的URL地址 --> <!-- <?php foreach ($cates as $cate) { echo '<li>'; echo '<a href="list.php?cate_id="'; echo $cate['cate_id'] . '>'; echo $cate['alias'] . '</a>'; echo '</li>'; } ?> --> <!-- 以上代码可以写为以下代码: --> <?php foreach ($cates as $cate) : ?> <!-- 这里:相当于 { --> <li><a href="list.php?cate_id=<?php echo $cate['cate_id']; ?>"><?php echo $cate['alias'] ?></a></li> <?php endforeach; ?> <!-- 这里endforeach;相当于 } --> </ul> </div>
点击 "运行实例" 按钮查看在线实例
公共底部代码:
<!--底部版权--> <div class="footer"> <p class="copyright"><?php echo $system['copyright']; ?> © 版权所有</p> </div> </body> </html>
点击 "运行实例" 按钮查看在线实例
首页的代码:
<?php require_once __DIR__ . '/inc/header.php'; foreach ($cates as $cate) { echo "<h2>{$cate['alias']}</h2>"; echo '<ol>'; // 遍历影$movies,输出各个电影的名字 foreach ($movies as $movie) { if ($cate['cate_id'] === $movie['cate_id']) { echo "<li><a href='detail.php?mov_id=" . $movie['mov_id'] . "'>{$movie['name']}</a></li>"; } } echo '</ol>'; } require_once __DIR__ . '/inc/footer.php';
点击 "运行实例" 按钮查看在线实例
列表页代码
<?php // 1、加载公共头部文件 require_once __DIR__ . '/inc/header.php'; // 2、从$_GET中获取cate_id,如果$_GET不写下标,则获取整个$_GET数组,写下标则获取下标对应的值 $cate_id = $_GET['cate_id']; // 3、此时$cate_id是一个字符串,需用intval函数将其转为int型 $cate_id = intval($cate_id); // 4、从$cates数组中取出对应$cate_id值得系列名称,写入标题 foreach ($cates as $cate) { if ($cate['cate_id'] === $cate_id) { echo "<h2>{$cate['alias']}</h2>"; echo "<ol>"; // 将$movies中对应$cate['cate_id']的电影名写入列表 foreach ($movies as $movie) { if($movie['cate_id']===$cate_id) { echo "<li><a href='detail.php?mov_id={$movie['mov_id']}'>{$movie['name']}</a></li>"; } } echo "</ol>"; } }
点击 "运行实例" 按钮查看在线实例
电影详情页代码:
<?php // 加载公共头部 include __DIR__ . '/inc/header.php'; $mov_id = intval($_GET['mov_id']); // 复制list.php模板直接修改 foreach ($movies as $movie) { if ($movie['mov_id'] === $mov_id) { echo "<h3>{$movie['name']}</h3>"; echo '<img src="/images/' . $movie['image'] . '" alt="" width="300">'; echo "<p style='text-indent: 2em'>{$movie['detail']}</p>"; } }; // 添加评论 // 创建一个数组用于保存评论 $comments = [ [ 'mov_id' => 1, 'user_id' => 1, 'user_name' => 'mike', 'content' => '倚天屠龙记真是一部好电影' ], [ 'mov_id' => 1, 'user_id' => 2, 'user_name' => 'tom', 'content' => '我不喜欢这版倚天!' ], [ 'mov_id' => 2, 'user_id' => 1, 'user_name' => 'mike', 'content' => '都挺好,真挺好' ], [ 'mov_id' => 3, 'user_id' => 1, 'user_name' => 'miki', 'content' => '如果可以这样爱,不要不要!' ], [ 'mov_id' => 4, 'user_id' => 1, 'user_name' => 'mike', 'content' => '妇联四真带劲!' ], [ 'mov_id' => 5, 'user_id' => 1, 'user_name' => 'mike', 'content' => '波西米亚狂想曲,终于看到了,啊啊啊啊啊!' ], [ 'mov_id' => 6, 'user_id' => 1, 'user_name' => 'mike', 'content' => '阿丽塔:战斗天使,真漂亮!' ], [ 'mov_id' => 7, 'user_id' => 1, 'user_name' => 'mike', 'content' => '情书看哭了' ], [ 'mov_id' => 8, 'user_id' => 1, 'user_name' => 'mike', 'content' => '天空之城,宫崎骏真棒!' ], [ 'mov_id' => 9, 'user_id' => 1, 'user_name' => 'mike', 'content' => '龙猫,我的最爱!' ] ]; // 将评论内容写入下方表格 echo '<h4>评论</h4>'; echo '<table>'; echo '<tr><th>用户昵称</th><th>评论内容</th></tr>'; foreach ($comments as $comment) { if($comment['mov_id']===$mov_id) { // 在表格中输入评论人和评论内容 echo "<tr><td>{$comment['user_name']}</td><td>{$comment['content']}</td></tr>"; } } echo '</table>'; // 加载公共底部 include __DIR__ . '/inc/footer.php';
点击 "运行实例" 按钮查看在线实例
这样,每个电影下面就会有对应的评论,效果如下: