批改状态:合格
老师批语:写得不错
一、先新建一个数据库test,下面新建几个表,数据结构如下图所示:

cates表数据结构如下:

movies表数据结构如下:

pinglun表数据结构如下:

system表结构数据如下:

然后可以直接录入数据也可以新建一个add.php文件导入之前的数组。
我们利用第二种方法示例导入一下评论这个表的数据。
二、先新建一个文件conn.php作为数据库连接的文件,代码如下所示:
<?php
//数据库连接参数
$db = [
'type' => 'mysql',
'host' => '127.0.0.1',
'dbname' => 'test',
'username' => 'root',
'password' => 'root',
];
//配置数据源
$dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}";
//连接数据库
try {
$pdo = new PDO($dsn,$db['username'],$db['password']);
}catch(PDOException $e){
echo '数据库连接失败:'.$e;
}
?>然后在add.php这个文件导入conn.php这个文件,以下是整个add.php的代码:
<?php
include __DIR__."/conn.php";
//评论区数据
$pinglun =[
[
'mov_id'=>1,
'userid'=>1,
'img_id'=>1,
'username'=>'木木啊',
'time'=>'2019-07-03',
'content'=>'新版《倚天》远超预期,服化道考究,新老演员演技在线,特效吊打一众玄幻剧,画面清晰有质感。从片花和特辑中,作为内地第一位赵敏,陈钰琪所饰演的赵敏,完美诠释了什么叫灿若***,顾盼生花,演技出色,值得期待。总之一句话,此剧值得追。',
'zan'=>10,
],
[
'mov_id'=>1,
'userid'=>2,
'img_id'=>2,
'username'=>'舒舒',
'time'=>'2019-07-16',
'content'=>'开头十分钟,我一直以为我调了0.5倍速看电视剧。。',
'zan'=>0,
],
[
'mov_id'=>1,
'userid'=>3,
'img_id'=>3,
'username'=>'mverge',
'time'=>'2019-08-16',
'content'=>'看剧照女主挺***的,片头居然还是周华健的《刀剑如梦》突然就好怀念老版啊,也怀念那时候看电视的时光',
'zan'=>7,
],
[
'mov_id'=>2,
'userid'=>1,
'img_id'=>1,
'username'=>'白楼小生',
'time'=>'2019-08-06',
'content'=>'正午最近的剧都相当靠谱啊,聚焦现实主义题材,开篇重男轻女的情节也过于真实了吧!戏骨阵容rio硬核,明玉在苏母葬礼离开时候那一场车里的哭戏真的nb,看似吵架一句不饶人,但是独自一个人的时候撑起的坚强一下子就崩溃了。姚晨还是厉害啊。',
'zan'=>27,
],
];
//创建SQL语句模板
$sql = 'INSERT INTO `pinglun` SET `mov_id`=:mov_id,`userid`=:userid,`img_id`=:img_id,`username`=:username,`time`=:time,`content`=:content,`zan`=:zan';
//创建SQL语句对象
$stmt = $pdo->prepare($sql);
//插入多条数据
//将变量绑定到sql语句模板的占位符上面
foreach ($pinglun as $v) {
$mov_id=$v['mov_id'];
$userid =$v['userid'];
$img_id =$v['img_id'];
$username=$v['username'];
$time=$v['time'];
$content=$v['content'];
$zan=$v['zan'];
$stmt->bindParam('mov_id',$mov_id,PDO::PARAM_INT);
$stmt->bindParam('userid',$userid,PDO::PARAM_INT);
$stmt->bindParam('img_id',$img_id,PDO::PARAM_INT);
$stmt->bindParam('username',$username,PDO::PARAM_STR);
$stmt->bindParam('time',$time,PDO::PARAM_STR);
$stmt->bindParam('content',$content,PDO::PARAM_STR);
$stmt->bindParam('zan',$zan,PDO::PARAM_INT);
if($stmt->execute()){
echo '成功';
}else{
echo '失败';
}
};三、导入所有的数据后,把conn.php引入到header.php
<?php
include __DIR__."/conn.php";
//获取影视movies数据
//创建SQL语句模板
$sql = 'SELECT `mov_id`,`name`,`image`,`detail`,`cate_id` FROM `movies`';
//创建SQL语句对象
$stmt = $pdo->prepare($sql);
//执行SQL语句
$stmt->execute();
//取得数据
$movies=$stmt->fetchAll(PDO::FETCH_ASSOC);
//获取栏目cates数据
//创建SQL语句模板
$sql = 'SELECT `cate_id`,`name`,`alias` FROM `cates`';
//创建SQL语句对象
$stmt = $pdo->prepare($sql);
//执行SQL语句
$stmt->execute();
//取得数据
$cates=$stmt->fetchAll(PDO::FETCH_ASSOC);
//获取评论区pinglun数据
//创建SQL语句模板
$sql = 'SELECT `mov_id`,`userid`,`img_id`,`username`,`time`,`content`,`zan` FROM `pinglun`';
//创建SQL语句对象
$stmt = $pdo->prepare($sql);
//执行SQL语句
$stmt->execute();
//取得数据
$pinglun=$stmt->fetchAll(PDO::FETCH_ASSOC);
//获取系统配置system数据
//创建SQL语句模板
$sql = 'SELECT `sys_id`,`title`,`desc`,`key`,`copy` FROM `system`';
//创建SQL语句对象
$stmt = $pdo->prepare($sql);
//执行SQL语句
$stmt->execute();
//取得数据
$system=$stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!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[0]['desc'] ?>">
<meta name="keywords" content="<?php echo $system[0]['key'] ?>">
<title><?php echo $system[0]['title'] ?></title>
</head>
<body>
<!--头部导航-->
<div class="header">
<ul class="nav">
<li><a href="index.php">首页</a></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 } ?>
</ul>
</div>
<!-- header.php 公用的 顶部文件, 头部文件 -->下面是detail.php文件的代码:
<?php
// 加载公共头部
include __DIR__ . '/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="static/images/'.$movie['image'].'" alt="" width="300">';
echo "<p style='text-indent: 2em'>{$movie['detail']}</p>";
}
};
?>
<!-- 评论区 -->
<div class="pinglun">
<h2>网友评论</h2><span>文明上网理性发言,请遵守 新闻评论服务协议</span><br>
<textarea class="text"></textarea><br>
<input type="button" value="提交"></input>
<?php
foreach ($pinglun as $pl) {
if($pl['mov_id'] == $mov_id){
echo '<div class="pl-list">';
echo '<a href=""><img src="static/images/user/'.$pl['img_id'].'.jpg" alt=""></a>';
echo '<ul>';
echo '<li><a href="">'.$pl['username'].'</a><span>'.$pl['time'].'</span></li>';
echo '<li><p>'.$pl['content'].'</p></li>';
echo '<li><span>赞+'.$pl['zan'].'</span><a href="">回复</a></li>';
echo '</ul>';
echo '</div>';
}
}
?>
</div>
<?php
// 加载公共底部
include __DIR__ . '/footer.php';下面是index.php文件的代码:
<?php
// 加载公共头部
include __DIR__ . "/header.php";
foreach ($cates as $cate) {
echo "<h2>{$cate['alias']}</h2>";
echo '<ol>';
// 遍历影视剧数组
foreach ($movies as $movie) {
// 判断当前影视剧所属栏目是否与当前栏目id相同?
// if 判断, 如果分类里的id 等于 视频里的分类id,就把 电影名 输出出来
if ($cate['cate_id'] == $movie['cate_id']) {
echo "<li>";
// a标签里的href没有 http:// https://
// detail.php
// mov_id 影视id
echo "<a href='detail.php?mov_id=" .$movie['mov_id']. "'>";
echo "{$movie['name']}";
echo "</a></li>";
}
}
echo '</ol>';
}
// 加载公共底部
include __DIR__ . '/footer.php';下面是footer.php文件的代码:
<!--底部版权--> <div class="footer"> <p class="copyright"><?php echo $system[0]['copy'] ?> © 版权所有</p> </div> </body> </html>
下面是list.php文件的代码:
<?php
// 加载公共头部
include __DIR__ . '/header.php';
// 将当前栏目id,, 使用GET方式,通过URL地址传递到列表模板list.php
// 获取url 上的 传值
$cate_id = $_GET['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';总结:
所有从数据库提出来的数据都是二维数组,所以在循环输出的时候需要注意。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号