//后端获取数据库代码
$pdo = new PDO('mysql:host=localhost;charset=utf8;port=3306;dbname=phpcn', 'root', '', [PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]);
// 每页的数据量
$pageSize = 8;
// 当前访问的是第几页
$page = $_GET['page'] ?? 1;
// 偏移量offset
$offset = ($page - 1) * $pageSize;
$sql = "SELECT `cou_id`,`title`,`pic`,`info`,`add_time`FROM `mj_course_lists` ORDER BY `cou_id` DESC LIMIT {$offset},{$pageSize}";
$lists = $pdo->query($sql)->fetchAll();
// 获取总页数
$sql1 = "SELECT COUNT(`cou_id`) AS `sum` FROM `mj_course_lists`";
$total = $pdo->query($sql1)->fetch()['sum'];
// var_dump($total);
//总页数
$pages = ceil($total / $pageSize);
前端代码如下
<? require 'pageData.php' ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="static/css/style.css">
<title>Document</title>
</head>
<body>
<table>
<caption>课程信息表</caption>
<thead>
<tr>
<td>编号</td>
<td>名称</td>
<td>封面</td>
<td>课程简介</td>
<td>创建时间</td>
<td>操作</td>
</tr>
</thead>
<tbody>
<?php foreach ($lists as $list) : ?>
<tr>
<td><?= $list['cou_id'] ?></td>
<td><?= $list['title'] ?></td>
<td><img style="width:100px" src=" <?= $list['pic'] ?>" alt="课程封面"></td>
<td><?= $list['info'] ?></td>
<td><?= date("Y-m-d H:m:s", $list['add_time']) ?></td>
<td><button>删除</button><button>编辑</button></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<!-- 生成分页条 -->
<p>
<? for ($i = 1; $i <= $pages; $i++) : ?>
<? $jump = sprintf('?page=%d', $i) ?>
<? $active = ($i == $page) ? 'active' : '' ?>
<a class="<?= $active ?>" href="<?= $jump ?>"><?= $i ?></a>
<!-- 生成高亮分页条 -->
<? endfor ?>
</p>
</body>
</html>
<?php
// 获取文件信息$_FILES
// var_dump($_FILES);
$originalFilename = $_FILES['avatar']['name'];
$type = $_FILES['avatar']['type'];
$tmp_name = $_FILES['avatar']['tmp_name'];
$error = $_FILES['avatar']['error'];
$size = $_FILES['avatar']['size'];
switch ($error):
case 0:
echo '<p style="color:green">文件上传成功</p> ';
break;
case 1:
echo '<p style="color:red">文件超过`php.ini`中`upload_max_filesize`值</p>';
break;
case 2:
echo '<p style="color:red">文件大小超过表单中`MAX_FILE_SIZE`指定的值</p>';
break;
case 3:
echo '<p style="color:red">文件只有部分被上传</p>';
break;
case 4:
echo '<p style="color:red">没有文件被上传</p>';
break;
case 6:
echo '<p style="color:red">找不到临时文件夹</p>';
break;
case 6:
echo '<p style="color:red">文件写入失败</p>';
break;
default:
echo '<p style="color:red">系统错误</p>';
break;
endswitch;
// 检查文件格式mine
$exts = ['png', 'jpg', 'jpeg', 'wbmp', 'gif'];
if (!in_array($ext, $exts)) {
echo '非法的文件类型';
}
// 检查大小
// `is_uploaded_file()` | 用来检测文件是否是通过http post方法上传的,而不是系统上的一个文件。作用是防止潜在攻击者通过问题脚本访问并非用于交互的文件
if ($error == 0) {
//移动暂存区的图片到服务器指定的文件目录
$des = 'storage/';
if (!file_exists($des)) {
mkdir($des, 0777, true);
}
// 为了确保同一秒钟两个用户上传的图片名称相同情况下,文件都能上传成功
$arr = explode('.', $originalFilename);
$ext = end($arr); //后缀
$prefix = array_shift($arr);
$newName = date('YmdHms', time()) . md5($prefix) . time() . '.' . $ext;
move_uploaded_file($tmp_name, $des . $newName);
}
<?php
// 被委托的类 数据库查询构造器
class Query
{
//创建pdo对象的唯一实例
private static $db;
protected $table;
protected $field;
protected $limit;
// private私有的 阻止此类在外部进行实例化
private function __construct()
{
}
static function connect($dsn, $user, $pwd)
{
if (is_null(static::$db)) {
static::$db = new pdo($dsn, $user, $pwd);
}
// return static::$db;
// 返回query实例
return new static;
}
public function table($table)
{
$this->table = $table;
echo `table`;
return $this; //返回本对象 为了实现链式调用
}
public function where($where)
{
}
public function field($field)
{
$this->field = $field;
return $this;
}
public function limit($limit)
{
$this->limit = $limit;
return $this;
}
public function getSql()
{
return sprintf('SELECT %s FROM %s LIMIT %d ', $this->field, $this->table, $this->limit);
}
public function select()
{
return static::$db->query($this->getSql())->fetchAll(PDO::FETCH_ASSOC);
}
}
// 委托方
class Db
{
//魔术方法 $name 表示被拦截的 函数名 $arguments 被拦截的参数
static function __callStatic($name, $arguments)
{
$dsn = 'mysql:host=localhost;dbname=phpcn;charset=utf8;port=3306';
$user = 'root';
$pwd = '';
// 获取到被委托的类Query实例
$q = Query::connect($dsn, $user, $pwd);
var_dump($q);
var_dump($name);
var_dump($arguments);
return call_user_func([$q, $name], ...$arguments);
}
}
// 客户端代码
$res = Db::table('mj_course_cat')->field('cat_id,name')->limit(20)->select();
var_dump($res);
相关推荐
© 2020 asciim码
人生就是一场修行