批改状态:合格
老师批语:如果GET参数不做类型转换的话, 直接进行全等比较会有问题, 因为GET默认为全是字符串类型, 而数据表中的数据读出的类型有可能与之不匹配
数据库
1、system表:网站的配置信息

2、category表:栏目表

3、detailsList表:内容详情表

一、公共部分
database.php
连接数据库参数设置:
$dsn = '数据库的类型:host=数据库主机名; dbname=数据库名称';
<?php return[ 'type' => 'mysql', 'host' => '127.0.0.1', 'dbname' => 'php', 'username' => 'root', 'password' => '' ];
connect.php
连接数据库
<?php
// 连接数据库:PDO
$db = require 'database.php';
// $dsn = '数据库的类型:host=数据库主机名; dbname=数据库名称';
$dsn = "{$db['type']}:host={$db['host']}; dbname={$db['dbname']}";
$username = $db['username'];
$password = $db['password'];
try{
$pdo = new PDO($dsn, $username, $password);
//var_dump($pdo);
}catch (PDOException $e){
die('数据库连接失: ' . $e->getMessage());
}头部 header.php
<?php // 1、连接数据库 require __DIR__ . '/connect.php'; // 2、获取网站的配置信息 $sql = 'SELECT * FROM `system` limit 1'; $stmt = $pdo->prepare($sql); $stmt->execute(); $system = $stmt->fetch(PDO::FETCH_ASSOC); // 3、获取栏目信息 $sql = 'SELECT `cate_id`, `name`, `alias` FROM `category`'; $stmt = $pdo->prepare($sql); $stmt->execute(); $cates = $stmt->fetchAll(PDO::FETCH_ASSOC); $cate_count = count($cates); // 4、获取详细信息 $sql = 'SELECT * FROM detailsList'; $stmt = $pdo->prepare($sql); $stmt -> execute(); $detailsList = $stmt->fetchAll(PDO::FETCH_ASSOC); ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title><?php echo $system['title'] ?></title> <meta name="keywords" content="<?php echo $system['key'] ?>"> <meta name="description" content="<?php echo $system['desc'] ?>"> <link rel="stylesheet" href="./static/css/style.css"> </head> <body> <div class="header"> <ul class="nav"> <li><a href="index.php">首页</a></li> <li><a href="">***介绍</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>
底部 footer.php
<p class="footer"><?php echo $system['copy'] ?> @ 版权所有</p> </body> </html>
二、首页、列表页、详情页
1、首页 index.php
<?php
header("content-type:text/html;charset=utf-8");
// 加载公共头部
include __DIR__. "/inc/header.php";
?>
<h2>***介绍</h2>
<p>本院坚持“专家技术型”发展战略,组建了一支由医学博士、硕士等精英组成的,具有专业水准的医疗技术团队,其中医务人员
一百余名,高级职称三十余名,中级职称五十余名。全院各科室学科带头人由临床经验丰富的权威医学专家担任,
他们来自于同济、协和、省人民、省妇幼、中南、陆总、武警等***。</p>
<?php
// 使用双重循环来遍历两个数组
// 外层遍历栏目数组$cates,内层根据栏目id来查询对应的栏目详情 $detailsList 信息
foreach ($cates as $cate){
echo "<h2>{$cate['alias']}</h2>";
echo '<ol>';
// 遍历栏目详情数组
foreach ($detailsList as $list){
// 判断当前栏目详情所属栏目是否与当前栏目id相同
if($list['cate_id'] === $cate['cate_id']){
echo "<li><a href='detail.php?deta_id=". $list['deta_id'] ."'>{$list['title']}</a></li>";
}
}
echo '</ol>';
}
?>
<?php
// 加载公共底部
include __DIR__ . '/inc/footer.php';
?>2、列表页
<?php
header("content-type:text/html;charset=utf-8");
require __DIR__ . '/inc/header.php';
$cate_id = $_GET['cate_id'];
//var_dump($cate_id);die; string类型
foreach ($cates as $cate){
if($cate['cate_id'] === $cate_id){
echo "<h2>{$cate['alias']}</h2>";
echo '<ul>';
// 遍历 detailsList 详情表
foreach ($detailsList as $list){
if($cate['cate_id'] === $list['cate_id']){
echo "<li><a href='detail.php?deta_id=".$list['cate_id']."'>{$list['title']}</a></li>";
}
}
echo '</ul>';
}
}
include __DIR__ . '/inc/footer.php';3、详情页
<?php
header("content-type:text/html;charset=utf-8");
include __DIR__ . '/inc/header.php';
$deta_id = $_GET['deta_id'];
foreach ($detailsList as $detail){
if($detail['deta_id'] === $deta_id ){
echo "<h3>{$detail['title']}</h3>";
echo '<img src="./images/'. $detail['img'] .'" alt="" width="350px">';
echo "<p>{$detail['detail']}</p>";
}
}
include __DIR__ . '/inc/footer.php';
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号