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}条&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;
    }
}

 

posted @ 2015-12-29 15:38  tiandi2050  阅读(255)  评论(0编辑  收藏  举报