php-数据库-分页类-上传类
config.ini.php
<?php
header("content-type:text/html;charset=utf-8");
//项目的根目录
define("ROOT","F:/oop/");
//数据库连接信息
define("DB_HOST",'localhost');
define("DB_USERNAME","root");
define("DB_PASSWORD","root");
define("DB_NAME",'cms');
define("DB_CHARSET","utf8");
//自动加载
function __autoload($className){
require ROOT.'class/'.$className.".class.php";
}
Db.class.php 单例模式
<?php
class Db{
protected $conn="";
private static $myselfOb="";
private function __clone(){ }
//用来产生一个对象
static function getInstance(){
if(!self::$myselfOb instanceof Db){
$ob=new Db();
self::$myselfOb=$ob;
}
return self::$myselfOb;
}
/*
* 作用:连接数据库,打开 设置交互字符集,选择数据库
* 参数:host username password dbName charset
* 返回值:bool
*/
private function Db(){
$link=mysql_connect(DB_HOST,DB_USERNAME,DB_PASSWORD);
$this->conn=$link;
if(is_resource($link)){
mysql_set_charset(DB_CHARSET);
$re=mysql_select_db(DB_NAME);
if($re){
return true;
}else{
return false;
}
}else{
return false;
}
}
/*
* 作用:执行sql语句
* 参数:sql语句
* 返回值:update delete 返回影响记录条数
* insert 返回主键id值
* select 返回二维数组
*/
function query($sql){
$re=mysql_query($sql);
if($re){
//判断sql语句的类型
if(preg_match("/^update|^delete/i",$sql)){
return mysql_affected_rows();
}else if(preg_match("/^insert/i",$sql)){
return mysql_insert_id();
}else if(preg_match("/^select/i",$sql)){
//返回二维数组
$arr=array();
while($row=mysql_fetch_assoc($re)){
$arr[]=$row;
}
return $arr;
}else{
return $re;
}
}else{
return false;
}
} /*
* 作用:关闭数据库连接
* return:bool
*/
function __destruct(){
$re=mysql_close($this->conn);
}
}
Page.class.php 分页类
<?php
class Page{
protected $pageSize;//每页条数
protected $page;//当前页的页码值
protected $num;//总条数
protected $pageNum;
protected $pageArr;
public $limit=0;
// 分页类的构造方法:
// 规定每页显示记录的条数--分页类
// 接收当前的页码值--分页类
// 获取记录总条数--分页类要用
// 算出总页数
// 判断当前页码值得合法性
/*
* $pageSize:每页条数
* $num:总条数
*/
function __construct($pageSize=10,$num=0){
// 接收当前的页码值--分页类
$page=isset($_GET['page']) ? $_GET['page'] : 1;
// 算出总页数
$pageNum=ceil($num/$pageSize);
// 判断当前页码值得合法性 大于等于1 小于等于总页数
if($page<1){//左端不合法
$page=1;
}
if($page>0 && $page>$pageNum){//右端不合法
$page=$pageNum;
}
$this->pageSize=$pageSize;
$this->page=$page;
$this->num=$num;
$this->pageNum=$pageNum;
//产生分页的配置数组
$arr=array(
'num'=>"共{$num}条",
'pagesize'=>"每页{$pageSize}条",
'pagenum'=>"共{$pageNum}页",
'page'=>"当前是{$page}页",
'first'=>"<a href='?page=1'>首页</a>",
'last'=>"<a href='?page=".($page-1)."'>上一页</a>",
'next'=>"<a href='?page=".($page+1)."'>下一页</a>",
'end'=>"<a href='?page=".($pageNum)."'>尾页</a>"
);
$this->pageArr=$arr;
}
// 方法:
// 获取limit的开始位置--分页类中产生
function getStart(){
// ($page-1)*$pageSize 数据模型类要用
return ($this->page-1)*$this->pageSize;
}
// 方法:
// 呈现分页的效果---分页类
function showPage($str=""){//$str="num,last,next"
if($str==""){
$pageStr="
共{$this->num}条
每页{$this->pageSize}条
共{$this->pageNum}页
当前是第{$this->page}页
<a href='?page=1'>第一页</a>
<a href='?page=".($this->page-1)."'>last</a>
<a href='?page=".($this->page+1)."'>next</a>
<a href='?page={$this->pageNum}'>最后一页</a>";
}else{
$arr=explode(",",$str);//array('num','last','next')
$pageStr="";//分页的结果
$pArr=$this->pageArr;//array
foreach($arr as $index){
$pageStr.=$pArr[$index]." ";
}
}
return $pageStr;
}
//以小方块形式呈现分页
function showPageByBlock($bNum=2){
$allBNum=$bNum*2+1;//总共显示的小方块个数
if($this->pageNum<=$allBNum){//第一种
$start=1;
$end=$this->pageNum;
}else{
if($this->page-$bNum<=0){//前面不够$bNum个
$start=1;
$end=$allBNum;
}else if($this->page+$bNum>$this->pageNum){//第四种
$start=$this->pageNum-$allBNum+1;
$end=$this->pageNum;
}else{//第三种
$start=$this->page-$bNum;
$end=$this->page+$bNum;
}
}
$pageStr="";
for($i=$start;$i<=$end;$i++){
if($i==$this->page){
$pageStr.="<a class='cur' href='?page={$i}'>{$i}</a>";
}else{
$pageStr.="<a href='?page={$i}'>{$i}</a>";
}
}
return $pageStr;
}
}
Upload.class.php 上传类
<?php
class Upload{
//把文件保存
function saveFile($toPath="./",$allowType=array('image/png','image/gif','image/jpeg','image/pjpeg'),$allowSize=2000000){
if(!empty($_FILES)){//有文件上传
$reArr=array();
foreach($_FILES['upload']['error'] as $k=>$v){
if($v===0){//文件上传没有出错
//获取类型进行判断
$type=$_FILES['upload']['type'][$k];
if(in_array($type,$allowType)){//类型是否合法
//判断size
$size=$_FILES['upload']['size'][$k];
if($size<=$allowSize){
//转移
$oldName=$_FILES['upload']['name'][$k];
$newName=$this->newName($oldName);
//保存
$re=move_uploaded_file($_FILES['upload']['tmp_name'][$k],$toPath."/".$newName);
if($re){
$reArr[$k]=$newName;
}else{
$reArr[$k]=false;
}
}else{
$reArr[$k]=false;
}
}else{
$reArr[$k]=false;
}
}else{
$reArr[$k]=false;
}
}
return $reArr;
}else{
return false;
}
}
//产生新名称
private function newName($oldName){//a.jpg
$name=md5(uniqid(microtime(),true));
$ext=pathinfo($oldName,PATHINFO_EXTENSION);
return $name.".".$ext;
}
}
php-数据库-分页类-上传类的更多相关文章
- webpy分页类 + 上传类
webpy没有分页类.按照php的思路.自己编了一个.数据库用的是sqlite. class Page(object): '''分页类''' def __init__(self,page_size,d ...
- php四个常用类封装 :MySQL类、 分页类、缩略图类、上传类;;分页例子;
Mysql类 <?php /** * Mysql类 */ class Mysql{ private static $link = null;//数据库连接 /** * 私有的构造方法 */ pr ...
- Php文件上传类class.upload.php
简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮助你快速的给自己的网站集成上传文件功能.不仅如此,此分类还有一些列的处理功能,可以对上传的文件或者本地的文件进行处 ...
- 自定义MVC框架之工具类-文件上传类
截止目前已经改造了3个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 该文件上传类功能如下: 1,允许定制上传的文件类型,文件mime信息,文 ...
- Yii 1.1.17 四、属性标签、AR类增删改查、使用上传类与扩展第三方类库
一.属性标签与规则设置 当进入网站页面,将会读数据库返回信息到视图上.那么,现在定义模型中的属性在视图标签上的显示, 也就是模型属性到前台标签的映射 // 定义模型属性到前台标签的映射 public ...
- THINKPHP源码学习--------文件上传类
TP图片上传类的理解 在做自己项目上传图片的时候一直都有用到TP的上传图片类,所以要进入源码探索一下. 文件目录:./THinkPHP/Library/Think/Upload.class.php n ...
- PHP图片上传类
前言 在php开发中,必不可少要用到文件上传,整理封装了一个图片上传的类也很有必要. 图片上传的流程图 一.控制器调用 public function upload_file() { if (IS_P ...
- Ueditor 1.4.3.1 使用 ThinkPHP 3.2.3 的上传类进行图片上传
在 ThinkPHP 3.2.3 中集成百度编辑器最新版 Ueditor 1.4.3.1,同时将编辑器自带的上传类替换成 ThinkPHP 3.2.3 中的上传类. ① 下载编辑器(下载地址:http ...
- ASP.NET 文件上传类 简单好用
调用: UploadFile uf = new UploadFile(); /*可选参数*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认: ...
随机推荐
- SpringBoot2.0总结
与SpringCloud关系 与SpringMVC关系 与JFinal区别 常用注解: @RestController @EnableAutoConfiguration @ComponentSc ...
- 【JavaWeb项目】一个众筹网站的开发(二)架构搭建之架构测试
1.dao层和pojo都是使用mbg生成,基本的CRUD以及JavaBean 2.将mbg放在dao层,一旦dao层打包以后mbg就删除掉 一.创建数据库用于测试 数据库名称:scw_0325 SQL ...
- CF1061E Politics E. Politics 解题报告
CF1061E Politics E. Politics 考虑利用树的性质,因为是子树问题,所以放到dfs序上. 只考虑一个树,问题是每个区间选恰好\(k\)个.因为区间其实是子树,所以区间要么包含, ...
- Jquery 实现回车键触发功能
keyup,上抬键盘 .$(function(){ 方法一: $(document).keyup(function(event){ if(event.keyCode ==13){ alert(&quo ...
- 在pycharm中切换python版本的方法
转载自:https://blog.csdn.net/sgfmby1994/article/details/77876873 目前,python2和python3都有很重要的意义,所以,我们经常会在电脑 ...
- 通过HttpServletResponseWrapper修改response输出流
在项目中遇到一个问题,需要对接口返回的数据进行加密给前端.项目中的controller一般都是返回一个实体form,重写的一个视图解析器继承ModelAndViewResolver,对返回的form转 ...
- 75、python学习第一篇
1.sys包下边的argv方法,从控制台获取数据 ''' Created on 2017年4月8日 @author: weizhen ''' import sys One = [" * &q ...
- 使用 twine 上传自己的 python 包到 pypi
打包检查 python setup.py check 打包 python3 setup.py sdist build 上传 twine upload dist/* twine 安装: pip inst ...
- 内核module读取进程页目录
根据当前CR3寄存器内容,读取对应物理内存中的页目录页,并进行解析 1: void dumpPageDirectoryEntry(u32 entry) 2: { 3: u8 present; 4: u ...
- linux shell设置颜色
使用echo或者printf时,可以添加输出文本的颜色设置 echo -e "Maximum \e[1;31m" $max_threads "\e[0mthreads a ...