Correction status:qualified
Teacher's comments:这个案例主要是考察php与html代码的混写与模板语法 , 还有就是http请求中的get, 是如果将多个页面之间串在一起的
1.用database.php return数据库信息;
2.用connect.php 导入database.php文件,PDO连接数据库;
3.在公共头文件header.php导入connect.php文件连接数据库,获取来自数据表的网站内容
4.用select来查询数据表的网站内容,然后进行fetch或fetchAll遍历
效果看这个网站 pc.wenbus.cn/0725/index.php 二级域名,老师批改的时候直接复制下域名
博客会屏蔽掉我们发的链接 pc.wenbus.cn/0725/index.php
database.php代码:
<?php return [ 'type' => 'mysql', 'host' => '127.0.0.1', 'dbname' => 'php1', 'username' => 'root', 'password' => 'root' ];
connect.php连接数据库代码
<?php $db = require __DIR__ .'/database.php'; $dsn = "{$db['type']:host={$db['host];dbname={$db['dbname']}"; $username = $db['username']; $password = $db['password']; try{ $pdo -> prepare($dsn,$username,$password); }catch(PDOException $e){ echo '连接失败'.$e -> getMessage(); }
header公共头文件(获取数据表的网站内容)
<?php // 获取数据库连接文件 require __DIR__ . '/connect.php'; // 系统内容设置参数 $stmt = $pdo->prepare('SELECT * FROM `system` LIMIT 1'); $stmt ->execute(); $system = $stmt ->fetch(PDO::FETCH_ASSOC); // 栏目数据 $sql = 'SELECT `cate_id`, `name`,`alias` FROM `cagegory`'; $stmt = $pdo-> prepare($sql); $stmt->execute(); $cates=$stmt->fetchAll(PDO::FETCH_ASSOC); $cate_count = count($cates); // 内容数据 $stmt = $pdo->prepare('SELECT `detail_id`,`name`,`image`,`detail`,`cate_id` FROM `details`'); $stmt -> execute(); $details = $stmt -> fetchAll(PDO::FETCH_ASSOC); ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="description" content="<?php echo $system['desc']; ?>"> <meta name="key" content="<?php echo $system['key']; ?>"> <link rel="stylesheet" href="inc/style.css"> <title><?php echo $system['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 endforeach; ?> </ul> </div>
点击 "运行实例" 按钮查看在线实例
<?php // 头部公共组件 include __DIR__ .'/inc/header.php'; // 网页内容区 //遍历栏目 foreach ($cates as $cate){ echo "<h3> {$cate['alias']} </h3>"; echo '<ol>'; // 遍历内容数据 foreach ($details as $detail){ // print_r($detail['cate_id']); // 当栏目的cate_id与数据的cate_id对应,显示内部数据,类似分类 if ($cate['cate_id'] === $detail['cate_id']){ echo "<li><a href='detail.php?detail_id=".$detail['detail_id']."'>{$detail['name']}</a></li>"; } } echo '</ol>'; } // 尾部公共组件 include __DIR__ .'/inc/footer.php';
点击 "运行实例" 按钮查看在线实例
<?php // 头部公共组件 include __DIR__ .'/inc/header.php'; //获取栏目id $cate_id = $_GET['cate_id']; //函数转换 //$cate_id = intval($cate_id); //这里intval处理ID后,是int整数类型,在foreach遍历时,$cate['cate_id']用dump获取是字符串类型 //var_dump($cate_id); 是int整数类型 //遍历栏目 foreach ($cates as $cate){ // var_dump($cate['cate_id']); 这里dump获取到数据是字符串string类型 // 用获取的栏目cate_id来判断 输出于获取到的栏目id相同的栏目数据 if($cate['cate_id'] === $cate_id){ echo "<h3> {$cate['alias']} </h3>"; echo '<ol>'; // 遍历内容数据区 foreach ($details as $detail){ // 用获取的栏目cate_id与内容数据中的cate_id进行判断 输出等同的内容数据 if ($cate['cate_id'] === $detail['cate_id']){ echo "<li><a href='detail.php?detail_id=".$detail['detail_id']."'>{$detail['name']}</a></li>"; } } echo '</ol>'; } } // 尾部公共组件 include __DIR__ .'/inc/footer.php';
点击 "运行实例" 按钮查看在线实例
数据表