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