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. postgres之清理空间碎片

    postgres=# select * from pg_stat_user_tables where relname = 'test'; -[ RECORD 1 ]-------+---------- ...

  2. MAT内存分析

    先下载 http://www.eclipse.org/mat/downloads.php 配置环境参数 分析一个堆转储文件需要消耗很多的堆空间,为了保证分析的效率和性能,在有条件的情况下,建议分配给 ...

  3. BZOJ 1005: [HNOI2008]明明的烦恼(高精度+prufer序)

    传送门 解题思路 看到度数和生成树个树,可以想到\(prufer\)序,而一张规定度数的图的生成树个数为\(\frac{(n-2)!}{\prod\limits_{i=1}^n(d(i)-1)!}\) ...

  4. SQL语句映射文件(2)增删改查、参数、缓存

    2.2 select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id="getStudent" paramet ...

  5. MySQL 表的创建、修改、删除

    1.创建表 create table 表名 ( 列名 类型 是否可以为空 列名 类型 是否可以为空 ) engine=innodb default charset=utf8; 是否可以为控制.null ...

  6. 测试技能图谱skill-map

    # 测试技能图谱 ## 代码静态分析- Sonar- PMD- Infer- Android * findbugs * AndroidLint * CheckStyle- iOS * scanbuil ...

  7. KEIL Code RO-data RW-data ZI-data 【转】

    来自:http://jinyong314.blog.163.com/blog/static/30165742201052225415901/ 字节 8位半字 16位字   32位 Code, RO-d ...

  8. 93、R语言教程详解

    加载数据 > w<-read.table("test.prn",header = T) > w X.. X...1 1 A 2 2 B 3 3 C 5 4 D 5 ...

  9. spring mvc 程序

    首先我们的界面在返回的时候回根据我们的配置信息进行路径的查找  然后会识别我们的控制器返回的字符串(其实就是界面的名字)而找到界面的信息,eg:如果我们返回的是success那么就会去找我们的WEB- ...

  10. memcached 安装与简单实用使用

    一.简介 1.memcache与memcached的区别与联系: memcache是php的拓展,memcached是客户端,复杂的说:Memcache模块提供了于memcached方便的面向过程及面 ...