批改状态:合格
老师批语:
//后端获取数据库代码$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);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号