一、先新建一个数据库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';
运行实例 »
总结:
所有从数据库提出来的数据都是二维数组,所以在循环输出的时候需要注意。