Correction status:qualified
Teacher's comments:提交时, 可将测试代码或中间代码删除, 只提交正式代码就可以
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';
点击 "运行实例" 按钮查看在线实例