批改状态:合格
老师批语:提交时, 可将测试代码或中间代码删除, 只提交正式代码就可以
1、header.php
<?php
require 'conn.php';
$sql='select * from movies';
$cates='select * from category';
$stmt=$pdo->prepare($sql);
$cate=$pdo->prepare($cates);
if($cate->execute()){
$catadata=$cate->fetchall();//分类查询
}
// 第一步,获取数据 (之后我们会从数据库中拿数据出来)
$title = '全球影视';
// $fenlei = [
// 'gc.php' => '国产好剧',
// 'om.php' => '欧美猛片',
// 'ri.php' => '日韩新片'
// ];
// 以后 一条命令,从数据库中,获取数据
// 注意:有规律的页面,数组里的数据也要有规律
// 第二步,把数据 放在html代码中
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/style.css">
<title><?php echo $title; ?></title>
</head>
<body>
<!--头部导航-->
<div class="header">
<ul class="nav">
<li><a href="index.php">首页</a></li>
<?php
// var_dump($catadata);
foreach($catadata as $v){
echo '<li><a href=list.php?cate_id='.$v['cate_id'].'>';
echo $v['alias'];
echo '</a></li>';
}
?>
</ul>
</div>点击 "运行实例" 按钮查看在线实例
2、footer.php
<!--底部版权--> <div class="footer"> <p class="copyright">商味书屋 © 版权所有</p> </div> </body> </html>
点击 "运行实例" 按钮查看在线实例
3、index.php
<?php
include_once 'header.php' ;
if($stmt->execute()){
$data=$stmt->fetchall();
}
?>
<!--分类、电影、循环-->
<?php
foreach($catadata as $k){
echo '<h2>' . $k['alias'] . '</h2>';
echo '<ol>';
// 我们可以不用判断,去对第三维数组进行循环
foreach($data as $v){
if($k['cate_id']==$v['cate_id']){
echo '<li><a href=detail.php?mov_id='.$v['mov_id'].'>';
echo $v['name'];
echo '</a></li>';
}
}
echo '</ol>';
}
?>
<?php
include 'footer.php';
?>点击 "运行实例" 按钮查看在线实例

4 list.php
<?php
// 加载公共头部
include __DIR__ . '/header.php';
if($cate->execute()){
$cates=$cate->fetchall();//分类查询
}
if($stmt->execute()){
$movies=$stmt->fetchall();
}
// 将当前栏目id,, 使用GET方式,通过URL地址传递到列表模板list.php
// 获取url 上的 传值
$cate_id = $_GET['cate_id'];
// var_dump($cate_id);
// 注意: url中的内容都是字符串, 整数字符串先做类型转换才可以
//echo gettype($cate_id);die;
// intval 把其他类型,转为整型
// 不转换:不知道用户传来的是什么类型的数据,长度这些都不知道。 就可能影响后面的体验
$cate_id = intval($cate_id); // 函数转换
// 将index.php中的主体代码简单修改一下
// 只显示一个栏目, 不需要做循环, 只需要作一个判断即可
foreach ($cates as $cate) {
// 在index.php基础上加一层判断,确定是否是当前栏目即可
// 如果上面的GET参数没有做类型转换, 那么这里就不能用===恒等
// 必须使用==, 以触发系统的类型自动转换机掉, 我还是建议全等操作
// == : 只比较值是否相等, === : 值与类型,都必须完全相同
if ($cate['cate_id'] == $cate_id) {
echo "<h2>{$cate['alias']}</h2>";
echo '<ol>';
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>';
break; // 结束循环
};
}
// 加载公共底部
include __DIR__ . '/footer.php';点击 "运行实例" 按钮查看在线实例

5 detail.php
<?php
// 加载公共头部
include __DIR__ . '/header.php';
if($stmt->execute()){
$movies=$stmt->fetchall();
}
$mov_id = intval($_GET['mov_id']);
// var_dump($mov_id);
// 复制list.php模板直接修改
foreach ($movies as $movie) {
if ($movie['mov_id'] == $mov_id) {
echo "<h3>{$movie['name']}</h3>";
echo '<img src="./img/'.$movie['image'].'" alt="" width="300">';
echo "<p style='text-indent: 2em'>{$movie['detail']}</p>";
}
};
// 加载公共底部
include __DIR__ . '/footer.php';点击 "运行实例" 按钮查看在线实例

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号