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. hibernate 双向1对多

    1: 还是用客户Customer和订单Order来解释: “一对多”的物理意义:一个客户可以有多个订单,某个订单只能归宿于一个客户. “双向”的物理意义:客户知道自己有哪些订单,订单也知道自己归宿于哪 ...

  2. UNP学习第五章(二)

    一.POSIX信号处理 信号:告知某进程发生了某个事件的通知(软中断),通常是异步的. 信号可以:由进程发给另一个进程,由内核发给某个进程. 设置信号处理办法,有三个选择: 1.写一个函数,在信号发生 ...

  3. 【unp】unix网络编程卷1-->环境搭建(ubuntu14.04)

    学习unp网络编程,树上的例子均存在#include "unp.h",故需要对环境进行配置. 1. 到资源页下载unpv13e 2. 解压并将unpv13e 移动到相应的文件夹下 ...

  4. Python基础教程(010)--第一个程序Hello Python

    前言 会编写Hello Python源程序 内容 1,在桌面下,新建Python目录 2,在认识的Python目录下,新建一个HelloPython的文件 linux下: touch HellPyth ...

  5. delphi 将Dll等生成资源文件

    资源文件一般为扩展名为res的文件,其自带的资源编译工具BRCC32.EXE(位于/Delphi/BIN目录下) 1.编写rc脚本文本用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在资 ...

  6. express上传图片

    var express = require('express') var app = express() var proxy = require('http-proxy-middleware') co ...

  7. ibatis 中的 $和#的区别

    在sql配置中比如in(#rewr#) 与in ($rewr$) 在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型 ...

  8. Qwidget布局操作之QGridLayout(网格布局)

    QMainWindow并没有setLayout()函数,因此不能使用setLayout()函数来设置layout,需要使用间接的方法. 需要做的只是先定义一个QWidget对象,然后使用QMainWi ...

  9. MySQL coalesce函数用法说明(转)

    在mysql中,其实有不少方法和函数是很有用的,一个叫coalesce的,作用是将返回传入的参数中第一个非null的值,比如 SELECT COALESCE(NULL, NULL, 1); -- Re ...

  10. 运维 04 Shell基础命令(二)

    Shell基础命令(二)   查看Linux的发行版 cat /etc/redhat-release cat /etc/os-release 查看系统用户的id信息 id 用户名 id root id ...