Blogger Information
Blog 34
fans 0
comment 0
visits 22862
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
第6-8章 mysql数据库管理-2019年09月25日20时00分
Tommy-黄天浩的博客
Original
522 people have browsed it

一、先新建一个数据库test,下面新建几个表,数据结构如下图所示:

QQ截图20190926144858.png

cates表数据结构如下:

QQ截图20190926144858.png

movies表数据结构如下:

QQ截图20190926144858.png

pinglun表数据结构如下:

QQ截图20190926144858.png

system表结构数据如下:

QQ截图20190926144858.png

然后可以直接录入数据也可以新建一个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';

运行实例 »

总结:

所有从数据库提出来的数据都是二维数组,所以在循环输出的时候需要注意。

Correction status:qualified

Teacher's comments:写得不错
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post