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}条&nbsp;
每页{$this->pageSize}条&nbsp;
共{$this->pageNum}页&nbsp;
当前是第{$this->page}页&nbsp;
<a href='?page=1'>第一页</a>&nbsp;
<a href='?page=".($this->page-1)."'>last</a>&nbsp;
<a href='?page=".($this->page+1)."'>next</a>&nbsp;
<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]."&nbsp;";
}
}
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-数据库-分页类-上传类的更多相关文章

  1. webpy分页类 + 上传类

    webpy没有分页类.按照php的思路.自己编了一个.数据库用的是sqlite. class Page(object): '''分页类''' def __init__(self,page_size,d ...

  2. php四个常用类封装 :MySQL类、 分页类、缩略图类、上传类;;分页例子;

    Mysql类 <?php /** * Mysql类 */ class Mysql{ private static $link = null;//数据库连接 /** * 私有的构造方法 */ pr ...

  3. Php文件上传类class.upload.php

    简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮助你快速的给自己的网站集成上传文件功能.不仅如此,此分类还有一些列的处理功能,可以对上传的文件或者本地的文件进行处 ...

  4. 自定义MVC框架之工具类-文件上传类

    截止目前已经改造了3个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 该文件上传类功能如下: 1,允许定制上传的文件类型,文件mime信息,文 ...

  5. Yii 1.1.17 四、属性标签、AR类增删改查、使用上传类与扩展第三方类库

    一.属性标签与规则设置 当进入网站页面,将会读数据库返回信息到视图上.那么,现在定义模型中的属性在视图标签上的显示, 也就是模型属性到前台标签的映射 // 定义模型属性到前台标签的映射 public ...

  6. THINKPHP源码学习--------文件上传类

    TP图片上传类的理解 在做自己项目上传图片的时候一直都有用到TP的上传图片类,所以要进入源码探索一下. 文件目录:./THinkPHP/Library/Think/Upload.class.php n ...

  7. PHP图片上传类

    前言 在php开发中,必不可少要用到文件上传,整理封装了一个图片上传的类也很有必要. 图片上传的流程图 一.控制器调用 public function upload_file() { if (IS_P ...

  8. Ueditor 1.4.3.1 使用 ThinkPHP 3.2.3 的上传类进行图片上传

    在 ThinkPHP 3.2.3 中集成百度编辑器最新版 Ueditor 1.4.3.1,同时将编辑器自带的上传类替换成 ThinkPHP 3.2.3 中的上传类. ① 下载编辑器(下载地址:http ...

  9. ASP.NET 文件上传类 简单好用

    调用: UploadFile uf = new UploadFile(); /*可选参数*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认: ...

随机推荐

  1. Win10桌面图标显示不正常变成了白色

    开机不知道什么原因,windows 10 桌面图标全部变成了白色,软件是可以点击正常打开使用,但是看着特别不爽.今天就告诉大家一种办法,解决这种问题. 解决步骤 1.在桌面右键新建 "文本文 ...

  2. js instanceof和typeof的区别及简单用法

    js中判断一个变量的类型,通常的做法是用typeof方法,看它返回的是 什么,但是对于数组和对象它返回的都是object,ECMAScript引入了java中的instanceof 方法来弥补这一缺陷 ...

  3. Service系统服务(一):安装一个KVM服务器、KVM平台构建及简单管理、virsh基本管理操作、xml配置文件的应用、为虚拟机制作快照备份、快建新虚拟机

    一.安装一个KVM服务器 目标: 本例要求准备一台 RHEL7.2 服务器,将其搭建为KVM平台,主要完成下列操作: 1> 关闭本机的SELinux保护.防火墙服务   2> 挂载RHEL ...

  4. [CSP-S模拟测试53]题解

    A.u 只涉及到区间修改可以考虑差分,然而如果每一行都差分复杂度还是过高.我们发现差分标记也是连续的(一行横着的一行斜着的),所以可以维护两个 差分的差分,扫两遍统计即可. #include<c ...

  5. SVN迁移Gitlab步骤

    概述 公司要求将之前使用SVN进行管理的项目迁移到Gitlab进行项目管理,但是运维连不上我们这边的SVN服务器,于是我们就得自己将SVN项目迁移到Gitlab.Yeah!终于有我表现的机会了. 要求 ...

  6. hci_ceph安装过程

    auto loiface lo inet loopbackauto enp50s0f0iface enp50s0f0 inet static address 192.168.1.6 netmask 2 ...

  7. 74、Salesforce的String的format方法

    String placehodler = 'Hello {0} , {1} is cool!'; List<String> fillers = new String[]{'Jason',' ...

  8. 模板引擎的简单原理template

    ​ var templateStr = "我的名字叫<%=name%>我是一只小狗,今年<%=age%>岁."; var data = { name:'旺财 ...

  9. Eclipes更改主题及字体

    1.打开Eclipse的Help->Eclipse Marketplace 2.在Find里搜索Eclipse Color Theme,点击Install按钮(lz已经安过了所以没有) 3.打开 ...

  10. 数据概览神器pandas_profiling

    安装: pip install pandas_profiling 用法如下: import pandas as pd import pandas_profiling df = pd.read_exce ...