首页 php教程 php手册 自己重构的一个分页显示类

自己重构的一个分页显示类

Jun 06, 2016 pm 07:38 PM
内网 分页 单位 显示 网站 自己 重构

最近单位内网要写个网站,发现很多地方用到分页显示,就自己根据自己的需要写了个类,发出来请各位多多指教。本人新手代码质量可能一般,也难免会有bug,不过还是想请各位大侠多多指点,先谢了。 因为我是用的是css布局,这段代码没有采用table布局,各位要使

最近单位内网要写个网站,发现很多地方用到分页显示,就自己根据自己的需要写了个类,发出来请各位多多指教。本人新手代码质量可能一般,也难免会有bug,不过还是想请各位大侠多多指点,先谢了。
因为我是用的是css布局,这段代码没有采用table布局,各位要使用的话,需要自己修改了。
<?php
/* 2015 by 秋尽西风
 * 数据库操作分页显示类
 * 在 wamp 环境下设计 不支持非 mysql 数据库
 * 默认采用 UTF8 编码
 * */
class DataByPage{

	/* 类属性
	* $mNumPerPage 默认分页显示每页显示的记录数
	* $mNumPage 默认当前页的页码
	* $mDataLink 数据库链接
	* $mSqlStr 要执行的 SQL 语句
	* $mOddCss 输出时奇数行 div 的 css 样式
	* $mOddCss 输出时偶数行 div 的 css 样式
	* $mHeaderDisplay 设置分页显示是否输出表头
	* $mHeaderCss 表头的 CSS 样式
	* $mDataConf 数据库的相关设置
	* */
	private $mNumPerPage = 10;
	private $mNumPage = 1;
	private $mDataLink ="";
	private $mSqlStr;
	private $mOddCss = "odd";
	private $mEvenCss = "even";
	private $mHeaderDisplay = true;
	private $mHeaderCss = "tableheader";
	private $mTableName = "";
	private $mDataConf = array(
		"dbHost" => "localhost",
		"dbLoginName" => "root",
		"dbPwd" => "",
		"dbName" => "dbName",
		"characterSet" => "UTF8"
	);
	
	/* 构造方法
	 * 保存数据库信息到数组 $mDataConf 
	 * 根据信息创建数据库连接
	 * $dbName 数据库的名称
	 * $dbHost 数据库的连接地址
	 * $dbLoginName 数据库的登录用户名
	 * $dbPwd 数据库的登录密码
	 * */
	function __construct($dbName,$dbHost="localhost",$dbLoginName="root",$dbPwd=""){
		
		$this->mDataConf["dbHost"] = $dbHost;
		$this->mDataConf["dbLoginName"] = $dbLoginName;
		$this->mDataConf["dbPwd"] = $dbPwd;
		$this->mDataConf["dbName"] = $dbName;
		
		$this->mDataLink = mysql_connect($dbHost,$dbLoginName,$dbPwd);
		if(!$this->mDataLink){die('Could not connect: ' . mysql_error());}
		
	}
	
	/* 析构方法
	 * 
	 * */
	function __destruct(){
		mysql_close($this->mDataLink);
	}
	
	/* 手动设置默认分页显示每页显示的记录数
	 * 
	function SetNumPerPage($numPerPage){
		$this->mNumPerPage = $numPerPage;
	}*/

	/* 手动设置要执行的 SQL 语句
	 * 如果这里手动设置了 SELECT 语句 在调用 PagingDisplay 方法时可以不输入任何参数
	 * */
	function SetMySqlStr($mySqlStr){
		$this->mSqlStr = $mySqlStr;
	}
	/*
	function GetNumPerPage(){
		return $this->mNumPerPage;
	}
	*/

	/* 生成 SQL SELECT 语句
	 * $dbTable 要进行查询操作的数据表 必需
	 * $searchField 要查询的字段 与 $searchKey 同时设置方能生效
	 * $searchKey 要查询的关键字 与 $searchField 同时设置方能生效
	 * $sortingField 排序依据的字段 与 $sortRules 同时设置方能生效
	 * $sortRules 排序规则 ASC/DESC 与 $sortingField 同时设置方能生效
	 * $numPage 当前需要分页显示的页码 与 $numPerPage 同时设置方能生效
	 * $numPerPage 分页显示中每页要显示的记录数 与 $numPage 同时设置方能生效
	 * $tableDisplayField 需要查询/显示的字段 "" 为显示全部字段
	 * */
	private function SetSqlSelectStr($dbTable="",$numPerPage="",$numPage="",$sortingField="",$sortRules="",$tableDisplayField="",$searchField="",$searchKey=""){
	
	//select * from $dbTable where $searchField like %$searchKey% order by $sortingField $sortRules limit ($numPage-1)*$numPerPage,$numPerPage
		
		$sql_str = "SELECT ";
		
		if($tableDisplayField!=""){
			foreach($tableDisplayField as $field){
				$sql_str = $sql_str.$field.",";
			}
			$sql_str = substr_replace($sql_str," ",-1);
			$sql_str = $sql_str."FROM";
		}
		else{
			$sql_str = "SELECT * FROM";
		}
		//select */$tableDisplayField from 
		
		if($dbTable=="") {die("please check dbTable");}
		else {$sql_str = $sql_str." ".$dbTable;}
		//select */$tableDisplayField from $dbTable
	
		if($searchField!="" && $searchKey!="")
		{$sql_str = $sql_str." WHERE ".$searchField." LIKE %".$searchKey."%";}
		//select */$tableDisplayField from $dbTable [where $searchField like %$searchKey%]
	
		if($sortingField!="" && $sortRules!="")
		{$sql_str = $sql_str." ORDER BY ".$sortingField." ". $sortRules;}
		//select */$tableDisplayField from $dbTable where $searchField like %$searchKey% [order by $sortingField $sortRules]
	
		if($numPerPage!="" && $numPage!="")
		{$sql_str = $sql_str." LIMIT ".($numPage-1)*$numPerPage.",".$numPerPage;}
		////select */$tableDisplayField from $dbTable where $searchField like %$searchKey% order by $sortingField $sortRules [limit ($numPage-1)*$numPerPage,$numPerPage]

		$this->mSqlStr = $sql_str;
	
	}

	/* 分页显示查询结果
	 * $dbTable 要进行查询操作的数据表 如果为空则需要事先手动设置 $mSqlStr:要执行的 SQL 语句
	 * $searchField 要查询的字段
	 * $searchKey 要查询的关键字
	 * $sortingField 排序依据的字段 
	 * $sortRules 排序规则 ASC/DESC
	 * $numPage 当前需要分页显示的页码
	 * $numPerPage 分页显示中每页要显示的记录数
	 * $tableDisplayField 需要查询/显示的字段 为一维数组类型 "" 为显示全部字段
	 * 分页显示的样式使用 CSS 控制 CSS 使用 class 选择器 奇数行的 CSS 样式为:$mOddCss 偶数行的CSS样式为:$mEvenCss 每个字段的 CSS 样式为字段名
	 * 表头各个字段的 CSS 样式为 字段名 + header 
	 * 表头整行 DIV 的 CSS 样式为 tableheader
	 * */
	function PagingDisplay($dbTable="",$numPage="",$numPerPage="",$sortingField="",$sortRules="",$tableDisplayField="",$searchField="",$searchKey=""){

		if($dbTable!=""){
			$this->mTableName = $dbTable;
			if($numPerPage==""){$numPerPage = $this->mNumPerPage;}
			else{$this->mNumPerPage = $numPerPage;}
			if($numPage==""){$numPage = $this->mNumPage;}
			else{$this->mNumPage = $numPage;}
			$this->SetSqlSelectStr($dbTable,$numPerPage,$numPage,$sortingField,$sortRules,$tableDisplayField,$searchField,$searchKey);			
		}
		
		if($numPerPage!="" && $numPage!=""){
			$this->mNumPerPage = $numPerPage;
			$this->mNumPage = $numPage;
		}

		if($this->mSqlStr==""){die("please check mSqlStr");}
		
		mysql_select_db($this->mDataConf["dbName"],$this->mDataLink);
		mysql_query(("SET NAMES '".$this->mDataConf["characterSet"]."'"),$this->mDataLink);
		echo $this->mSqlStr;
		$results = mysql_query($this->mSqlStr);
		$i = 1;
		
		while($row=mysql_fetch_assoc($results)){
			
			if($i==1 && $this->mHeaderDisplay){
				echo "<div class='".$this->mHeaderCss."'>";
				foreach($row as $field=>$value){
					echo "<div class='".$field."header'>".$field."</div>";
				}
				echo "</div>";
				//mysql_data_seek($results,0);
			}

			if($i++%2==1){
				echo "<div class='".$this->mOddCss."'>";
			}
			else{
				echo "<div class='".$this->mEvenCss."'>";
			}
			foreach($row as $field=>$value){
				echo "<div class='".$field."'>".$value."</div>";
			}
			echo "</div>";
		}
		
		
		
	}
	
	/* 显示翻页控制 共xxx条记录 首页 上一页 下一页 末页 第x/x页 GO
	 * $actionPage 处理链接的页面
	 * $numPage 分页现实的当前页码
	 * $searchField 如果是对搜索结果分页显示 这里填写搜索的字段
	 * $searchKey 如果是对搜索结果分页显示 这里填写搜索的关键字
	 **/
	function PageingControl($actionPage,$numPage="",$searchField="",$searchKey=""){
		 
		mysql_select_db($this->mDataConf["dbName"],$this->mDataLink);
		mysql_query(("SET NAMES '".$this->mDataConf["characterSet"]."'"),$this->mDataLink);
		$temp_result = mysql_query("SELECT * FROM ".$this->mTableName,$this->mDataLink);
		$num_record = mysql_num_rows($temp_result);
		 
		$num_page_total = ceil($num_record/$this->mNumPerPage);
		if($num_page_total<1){$num_page_total = 1;}
		if($numPage==""){$numPage = $this->mNumPage;}
		if($numPage<1 || $numPage>$num_page_total){$numPage = 1;}
		
		if($searchField=="" || $searchKey==""){
			echo "共".$num_record."条记录 ";
			echo "<a href='".$actionPage."?numPage=1'>首页 </a>";
			if($numPage>1)
			{echo "<a href='".$actionPage."?numPage=".($numPage-1)."'>上一页 </a>";}
			if($numPage<$num_page_total)
			{echo "<a href='".$actionPage."?numPage=".($numPage+1)."'>下一页 </a>";}
			echo "<a href='".$actionPage."?numPage=".$num_page_total."'>末页 </a>";
			echo "<form action='".$actionPage."' method='get'>第<input name='numPage' type='text' value=".$numPage." />/".$num_page_total."页<input type=submit value='GO' /></form>";
		}
		else{
			echo "共".$num_record."条记录 ";
			echo "<a href='".$actionPage."?numPage=1&searchField=".$searchField."&searchKey=".$searchKey."'>首页 </a>";
			if($numPage>1)
			{echo "<a href='".$actionPage."?numPage=".($numPage-1)."&searchField=".$searchField."&searchKey=".$searchKey."'>上一页 </a>";}
			if($numPage<$num_page_total)
			{echo "<a href='".$actionPage."?numPage=".($numPage+1)."&searchField=".$searchField."&searchKey=".$searchKey."'>下一页 </a>";}
			echo "<a href='".$actionPage."?numPage=".$num_page_total."&searchField=".$searchField."&searchKey=".$searchKey."'>末页 </a>";
			echo "<form action='".$actionPage."' method='get'>第<input name='numPage' type='text' value=".$numPage." />/".$num_page_total."页<input name='searchField' type='hidden' value='".$searchField."'/><input name='searchKey' type='hidden' value='".$searchKey."'/><input type=submit value='GO' /></form>";
		}
	 
		
	 }
/*	 
	 function test(){
		 echo $this->mSqlStr;
		 if($this->mDataLink==""){echo "no";}
		 $results = mysql_query($this->mSqlStr,$this->mDataLink);
	 }
*/
}


//?>
登录后复制
<?php
/**/
require 'databypage.class.php';
$ot = new DataByPage("ws");
$ot->PagingDisplay("ws_video",1,10);
$ot->PageingControl("this.php");
?>
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
有什么学c语言的网站 有什么学c语言的网站 Jan 30, 2024 pm 02:38 PM

学c语言的网站:1、C语言中文网;2、菜鸟教程;3、C语言论坛;4、C语言帝国;5、脚本之家;6、天极网;7、红黑联盟;8、51自学网;9、力扣;10、C Programming。详细介绍:1、C语言中文网,这是一个专门为初学者提供C语言学习资料的网站,内容丰富,包括基础语法、指针、数组、函数、结构体等多个模块;2、菜鸟教程,这是一个综合性的编程学习网站等等。

桌面布局已锁定的原因及解决方法 桌面布局已锁定的原因及解决方法 Feb 19, 2024 pm 06:08 PM

显示桌面布局已锁定是怎么回事在使用计算机的过程中,有时我们可能会遇到显示桌面布局已锁定的情况。这个问题意味着我们无法自由地调整桌面图标的位置或改变桌面背景等操作。那么,显示桌面布局已锁定到底是怎么回事呢?一、理解桌面布局和锁定功能首先,我们需要了解桌面布局和桌面锁定这两个概念。桌面布局是指桌面上各个元素的排列方式,包括快捷方式、文件夹和小部件等。我们可以自由

如何让远程桌面连接显示对方的任务栏 如何让远程桌面连接显示对方的任务栏 Jan 03, 2024 pm 12:49 PM

远程桌面连接使用的用户非常多,很多用户在使用的时候都会遇到些小问题,比如没有显示对方的任务栏,其实很可能是对方的设置问题,下面就来看看解决方法吧。远程桌面连接怎么显示对方的任务栏:1、首先点击“设置”。2、然后再打开“个性化”。3、随后选择左侧的“任务栏”4、将图中隐藏任务栏选项关闭即可。

MyBatis分页插件原理详解 MyBatis分页插件原理详解 Feb 22, 2024 pm 03:42 PM

MyBatis是一个优秀的持久层框架,它支持基于XML和注解的方式操作数据库,简单易用,同时也提供了丰富的插件机制。其中,分页插件是使用频率较高的插件之一。本文将深入探讨MyBatis分页插件的原理,并结合具体的代码示例进行说明。一、分页插件原理MyBatis本身并不提供原生的分页功能,但可以借助插件来实现分页查询。分页插件的原理主要是通过拦截MyBatis

Linux 中如何查看当前目录? Linux 中如何查看当前目录? Feb 23, 2024 pm 05:54 PM

在Linux系统中,要显示当前路径可以使用pwd命令。pwd命令是PrintWorkingDirectory的缩写,用于显示当前工作目录的路径。在终端中输入以下命令即可显示当前路径:pwd执行该命令后,终端会显示当前工作目录的完整路径,如:/home/user/Documents。另外,还可以使用一些其他选项来增强pwd命令的功能,例如-P选项可以显示出

怎么显示wifi密码二维码 推荐无线密码微信扫一扫3秒搞定 怎么显示wifi密码二维码 推荐无线密码微信扫一扫3秒搞定 Feb 20, 2024 pm 01:42 PM

WIFI密码不用经常输入,所以忘记了也很正常,今天我教大家一个最简单的方法来查到自己家WIFI的密码,3秒搞定。WIFI密码那就是用微信的扫一扫来查看,本方法的前提是:要有一台手机能连上过WIFI。好了,下面开始操作教程:步骤1、我们进入手机,从手机顶部下拉,调出状态栏,WIFI图标步骤2、长按WIFI图标,进入WLAN设置;长按WIFI图标步骤3、点击已经连接上的自己家的WIFI名称,点击分享密码,它会弹出来二维码;分享WIFI密码步骤4、我们截图保存此二维码;步骤5、桌面长按微信图标,点击扫

PHP数组分页的最佳实现方式 PHP数组分页的最佳实现方式 May 04, 2024 pm 02:39 PM

PHP数组分页有两种最常见的方式:使用array_slice()函数:计算要跳过的元素数量,然后提取指定范围的元素。使用内置迭代器:实现Iterator接口,rewind()、key()、current()、next()和valid()方法用于遍历指定范围内的元素。

深入理解Go语言中的函数重构技巧 深入理解Go语言中的函数重构技巧 Mar 28, 2024 pm 03:05 PM

在Go语言程序开发中,函数重构技巧是十分重要的一环。通过优化和重构函数,不仅可以提高代码质量和可维护性,还可以提升程序的性能和可读性。本文将深入探讨Go语言中的函数重构技巧,结合具体的代码示例,帮助读者更好地理解和应用这些技巧。1.代码示例1:提取重复代码片段在实际开发中,经常会遇到重复使用的代码片段,这时就可以考虑将重复代码提取出来作为一个独立的函数,以

See all articles