自己重构的一个分页显示类
最近单位内网要写个网站,发现很多地方用到分页显示,就自己根据自己的需要写了个类,发出来请各位多多指教。本人新手代码质量可能一般,也难免会有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"); ?>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

C 언어 학습 웹사이트: 1. C 언어 중국어 웹사이트, 3. C 언어 포럼, 5. Script House, 7. Red and Black Alliance; 51 자율 학습 네트워크 9. Likou 10. C 프로그래밍; 자세한 소개: 1. 초보자를 위한 C 언어 학습 자료 제공 전용 웹 사이트입니다. 기본 문법, 포인터, 배열, 함수, 구조 및 기타 모듈을 포함한 풍부한 콘텐츠가 있습니다. 포괄적인 프로그래밍 학습 웹사이트 등이 있습니다.

데스크탑 레이아웃이 잠겨 있으면 어떻게 됩니까? 컴퓨터를 사용할 때 데스크탑 레이아웃이 잠기는 상황이 발생할 수 있습니다. 이 문제는 데스크탑 아이콘의 위치를 자유롭게 조정하거나 데스크탑 배경을 변경할 수 없음을 의미합니다. 그렇다면 데스크탑 레이아웃이 잠겨 있다는 메시지가 나타나면 정확히 무슨 일이 일어나고 있는 걸까요? 1. 데스크탑 레이아웃 및 잠금 기능 이해 먼저 데스크탑 레이아웃과 데스크탑 잠금의 두 가지 개념을 이해해야 합니다. 데스크탑 레이아웃이란 바로가기, 폴더, 위젯 등 데스크탑의 다양한 요소를 배열하는 것을 말합니다. 우리는 자유로울 수 있어

MyBatis는 XML과 주석을 기반으로 하는 뛰어난 지속성 레이어 프레임워크입니다. 또한 간단하고 사용하기 쉬운 플러그인 메커니즘도 제공합니다. 그 중 페이징 플러그인은 가장 많이 사용되는 플러그인 중 하나입니다. 이 기사에서는 MyBatis 페이징 플러그인의 원리를 자세히 살펴보고 특정 코드 예제를 통해 설명합니다. 1. 페이징 플러그인 원리 MyBatis 자체는 기본 페이징 기능을 제공하지 않지만 플러그인을 사용하여 페이징 쿼리를 구현할 수 있습니다. 페이징 플러그인의 원리는 주로 MyBatis를 가로채는 것입니다.

원격 데스크톱 연결을 사용하는 사용자가 많습니다. 사용 시 상대방의 작업 표시줄이 표시되지 않는 등 몇 가지 사소한 문제가 발생합니다. 실제로는 상대방의 설정 문제일 가능성이 높습니다. 솔루션. 원격 데스크톱 연결 중에 상대방의 작업 표시줄을 표시하는 방법: 1. 먼저 "설정"을 클릭합니다. 2. 그런 다음 "개인 설정"을 엽니다. 3. 그런 다음 왼쪽에서 "작업 표시줄"을 선택합니다. 4. 그림에서 작업 표시줄 숨기기 옵션을 끕니다.

Linux 시스템에서는 pwd 명령을 사용하여 현재 경로를 표시할 수 있습니다. pwd 명령은 PrintWorkingDirectory의 약어로 현재 작업 디렉터리의 경로를 표시하는 데 사용됩니다. 현재 경로를 표시하려면 터미널에 다음 명령을 입력하십시오. pwd 이 명령을 실행하면 터미널에 /home/user/Documents와 같은 현재 작업 디렉터리의 전체 경로가 표시됩니다. 또한 몇 가지 다른 옵션을 사용하여 pwd 명령의 기능을 향상할 수 있습니다. 예를 들어 -P 옵션은 다음을 표시할 수 있습니다.

WIFI 비밀번호는 자주 입력할 필요가 없기 때문에 잊어버리는 것이 일반적입니다. 오늘은 3초 안에 완료할 수 있는 가장 간단한 WIFI 비밀번호 찾는 방법을 알려드리겠습니다. WIFI 비밀번호를 확인하려면 WeChat을 사용하여 스캔하세요. 이 방법의 전제는 WIFI에 연결할 수 있는 휴대폰이 있어야 한다는 것입니다. 자, 튜토리얼을 시작해 보겠습니다. 1단계. 전화기를 입력하고 전화기 상단을 아래로 당겨서 상태 표시줄과 WIFI 아이콘을 불러옵니다. 2단계. WIFI 아이콘을 길게 눌러 WLAN 설정으로 들어갑니다. WIFI 아이콘을 누릅니다. 3단계. 연결됨을 클릭하고 집의 WIFI 이름을 입력하고 비밀번호 공유를 클릭하면 QR 코드가 나타납니다. WIFI 비밀번호 공유 4단계, 스크린샷을 찍어 이 QR 코드를 저장합니다. , 바탕 화면의 WeChat 아이콘을 길게 누르고 스캔을 클릭하세요.

PHP 배열을 페이지화하는 가장 일반적인 두 가지 방법은 array_slice() 함수를 사용하는 것입니다. 건너뛸 요소 수를 계산한 다음 지정된 요소 범위를 추출합니다. 내장 반복자 사용: Iterator 인터페이스를 구현하고 rewind(), key(), current(), next() 및 valid() 메서드를 사용하여 지정된 범위 내의 요소를 탐색합니다.

Go 언어 프로그램 개발에 있어서 기능 재구성 능력은 매우 중요한 부분입니다. 기능을 최적화하고 리팩터링하면 코드 품질과 유지 관리 가능성을 향상시킬 수 있을 뿐만 아니라 프로그램 성능과 가독성도 향상시킬 수 있습니다. 이 기사에서는 독자가 이러한 기술을 더 잘 이해하고 적용할 수 있도록 특정 코드 예제와 결합된 Go 언어의 함수 재구성 기술을 탐구합니다. 1. 코드 예제 1: 중복된 코드 조각 추출 실제 개발에서는 재사용된 코드 조각을 자주 접하게 됩니다. 이때 반복되는 코드를 독립적인 함수로 추출하는 것을 고려해 볼 수 있습니다.
