博客列表 >第6-8章 mysql数据库管理-2019年09月25日20时00分

第6-8章 mysql数据库管理-2019年09月25日20时00分

Tommy-黄天浩的博客
Tommy-黄天浩的博客原创
2019年09月26日 15:07:23524浏览

一、先新建一个数据库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';

运行实例 »

总结:

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

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议