-
- /**
- * PHP 페이지 매김 코드
- **/
- /**
- * 데이터베이스 연결
- * bbs.it-home.org
- * @param string $strHost 데이터베이스 서버 호스트 주소
- * @param string $strAccount 데이터베이스 계정
- * @param string $strPassword 데이터베이스 비밀번호
- * @return 리소스
- **/
- 함수 mysqlConnect($strHost, $strAccount,$strPassword,$strDBname)
- {
- $strHost=trim($strHost);
- $strAcount=trim($strAccount);
- $strPassword=trim($strPassword);
- $resLink=mysql_connect($strHost,$strAccount,$strPassword);
- if(!$resLink)
- {
- return false;
- }
- else
- { // 이름 설정... 데이터베이스 인코딩에 따라 설정
- mysql_query('set names utf8',$resLink);
- $isValidate=mysql_select_db($strDBname,$resLink);
- if($isValidate )
- {
- return $resLink;
- }
- else
- {
- return false;
- }
- }
- }
- /**
- *페이징의 현재 페이지 번호를 승인하고 해당 매개변수 값을 계산합니다.
- *포함: 시작 페이지 번호 $arrParameter['start']
- * 끝 페이지 번호 $arrParameter['end']
- * 총 레코드 수 $arrParameter['all']
- * 각 페이지에 표시되는 레코드 수 $arrParameter['nums']
- * 페이지에 표시되는 링크 수 $arrParameter['links']
- * 쿼리할 sql 문 $arrParameter['sql']
- * 페이징 막대 유형 $arrParameter['tag']
- *
- int $intPage 현재 페이지 번호 값
- int $intNums 개수 각 페이지에 표시되는 레코드
- int $intLinks 페이지에 표시되는 링크 수
- string $strTablename 페이지에 데이터 테이블 표시
- resource $resLink 데이터 연결 핸들
- 배열
- ** /
- 함수 계산 매개변수($intPage,$intNums,$intLinks,$strTablename,$resLink){
- $intPage=(int)$intPage;
- $intNums=(int)$intNums;
- $intLinks=(int)$intLinks;
- //표시되는 링크의 개수가 홀수가 아닌 경우 홀수로 조정
- if($intLinks % 2 == 0){
- $intLinks--;
- }
- //각 페이지에 표시되는 레코드 개수가 0보다 크지 않으면 10으로 조정
- if($intNums <= 0){
- $intNums =10;
- }
- //총 페이지 수 계산
- $strSql1="`{$strTablename}`에서 num으로 count(*) 선택";
- $resObj1=mysql_query($ strSql1,$resLink);
- $arrObj1=mysql_fetch_assoc($ resObj1);
- $intAllRecords=$arrObj1['num'];
- $intAllPage=ceil($intAllRecords/$intNums);
- //SQL 문 제한 키워드의 첫 번째 매개변수
- $intOffset=($intPage-1)*$intNums;
- //이전 페이지와 다음 페이지만 표시, 즉 표시되는 링크 수는 0보다 크지 않음
- if($intLinks <= 0){
- $strSql2="`{$strTablename}`에서 * 선택 제한 {$intOffset},{$intNums}";
- $arrParameter ['start']=null;
- $arrParameter['end'] =null;
- $arrParameter['page']=$intPage;
- $arrParameter['nums']=$intNums;
- $arrParameter['links']=null;
- $arrParameter[ 'all']=$intAllPage;
- $arrParameter['sql']=$strSql2;
- $arrParameter['tag'] =1;
- //페이징 바코드가 표시될 때 표시되는 링크 숫자가 0보다 큰 경우
- }else{
- //총 기록이 0보다 큰 경우
- if($intAllPage > ; 0){
- //현재 페이지 번호의 값 결정
- if($ intPage <= 0){
- $intPage=1;
- }
- if($intPage > ;= $intAllPage){
- $intPage=$intAllPage;
- }
- $ intHalfLinks=floor($intLinks/2);
- //시작 페이지 번호 값 계산
- $ intStartPage=$intPage-$intHalfLinks;
- if($intStartPage <= 0){
- $intStartPage =1;
- }
- if(($intAllPage-$intPage) < $intHalfLinks) {
- //$intStartPage=$intPage-$intHalfLinks-($intHalfLinks-($intAllPage-$intPage) );
- //$intStartPage=$intPage-$intHalfLinks-$intHalfLinks $intAllPage-$intPage;
- $intStartPage=$intAllPage-2*$intHalfLinks;
- }
- //끝 페이지 번호 계산
- $intEndPage=$intPage $intHalfLinks;
- if($intEndPage < ; $intLinks && $intAllPage >=$intLinks){
- $intEndPage=$intLinks;
- }
- if($intEndPage > $intAllPage){
- $intEndPage=$intAllPage;
- }
- //실행할 SQL문 생성
- $strSql2="select * from `{$strTablename}`limit {$intOffset},{$intNums}";
- $arrParameter['start' ]=$intStartPage;
- $arrParameter['end']=$intEndPage;
- $arrParameter['page'] =$intPage;
- $arrParameter['nums']=$intNums;
- $arrParameter['links']=$intLinks;
- $arrParameter['all']=$intAllPage;
- $ arrParameter['sql']=$strSql2;
- $arrParameter['tag']= 2;
- //전체 레코드가 0인 경우
- }else{
- $arrParameter['start ']=null;
- $arrParameter['end']=null;
- $arrParameter['page']=null;
- $arrParameter['nums']=null;
- $arrParameter[ 'links']=null;
- $arrParameter['all']=null;
- $arrParameter['sql']=null;
- $arrParameter['tag']=3;
- }
- }
- return $arrParameter;
- }
- /**
- * 페이징 바 생성
- *
- * @param int $intPage 현재 표시된 페이지 번호 값
- * @param int $intStartPage 시작 페이지 번호
- * @param int $intEndPage 끝 페이지 번호
- * @param int $intAllRecords 총 레코드 수
- * @param int $intTag 페이징 막대 유형 태그
- * @return 문자열
- **/
- function createPagingItem($intPage,$intStartPage,$intEndPage,$intAllPage,$intTag){
- $strPageItem='';
- //표시만 top 한 페이지와 다음 페이지의 경우 표시되는 링크의 개수는 0개 이하입니다
- if($intTag == 1){
- if($intAllPage <= 0){
- $strPageItem.='홈페이지  ; 마지막 페이지';
- }else{
- if($intPage == 1){
- $strPageItem.="홈 이전 페이지";
- $strPageItem.= " ";
- }else{
- $strPageItem.="홈페이지";
- $strPageItem .=" ";
- $strPageItem.="이전 페이지";
- $ strPageItem.=" ";
- }
- if($intPage == $intAllPage){
- $strPageItem.="다음 페이지 마지막 페이지";
- } else {
- $strPageItem.="다음 페이지";
- $strPageItem.="  ; ";
- $strPageItem.="마지막 페이지";
- }
- }
- }
- //페이징 바코드 표시 시 표시되는 링크 개수가 0보다 큽니다
- if($intTag == 2){
- if($intPage == 1){
- $ strPageItem.= "홈 이전 페이지";
- $strPageItem.=" ";
- }else{
- $strPageItem.=" 홈페이지";
- $strPageItem.=" ";
- $strPageItem.="";
- $strPageItem.=" ";
- }
- for($i=$intStartPage;$i<= $intEndPage;$i ){
- if($i == $intPage){
- $strPageItem.=$i;
- }else{
- $strPageItem.="[".$i."]";
- }
- $strPageItem.=" ";
- }
- if($intPage == $intAllPage ){
- $strPageItem.="다음 페이지 마지막 페이지";
- }else{
- $strPageItem.="다음 페이지";
- $strPageItem.=" ";
- $strPageItem.="마지막 페이지";
- }
- }
- //전체 레코드가 0일 때
- if ($intTag == 3){
- $strPageItem .='홈 마지막 페이지';
- }
- return $strPageItem;
- }
- /**
- * 데이터 획득 및 출력
- *
- * @param string $strSql sql 문 쿼리
- * @param array $arrFields 표시해야 할 필드로 구성된 배열
- * @param 리소스 $resLink 데이터 연결 핸들
- * @return 문자열
- ** /
- function outPutData($strSql,$arrFields,$ resLink){
- $resObj=mysql_query($strSql,$resLink);
- $arrObj=array();
- $strOutPutData='' ;
- $arrFieldsCode=array_keys($arrFields);
- while(@$arrRow=mysql_fetch_assoc($resObj)){
- $arrObj[]=$arrRow;
- }
- $strOutPutData.="
";
- $strOutPutData.='
';
- foreach($arrFieldsCode as $strVal){
- $strOutPutData.="< td>".$arrFields[trim($strVal)]. "";
- }
- $strOutPutData.="
";
- foreach($arrObj as $ arrVal){
- $strOutPutData.="
foreach($arrFieldsCode as $strVal){- $strOutPutData.="
".$arrVal[trim($strVal )]." | ";
- }
- $strOutPutData.="
";
- }
- $strOutPutData.="
";
- return $strOutPutData;
- }
- // 데이터베이스 연결 및 선택
- // 참고: 데이터베이스 이름뿐만 아니라 데이터베이스 계정과 비밀번호도 수정해야 합니다.
- $resLink=mysqlConnect('localhost','root','root' ,'ztlibrary') ;
- // 페이징 매개변수 찾기 참고: 데이터 테이블 이름을 수정해야 합니다.
- $arrParameter=calculateParamester(@$_GET['page']?$_GET['page']:1 ,
- 10, 5,'book_info',$resLink);
- //표시할 데이터는 테이블의 필드 이름과 해당 키 값으로 구성됩니다. 필드 이름의 중국어 해석은 해당 요소입니다. 값
- //참고: 데이터 테이블
- $arrFields=array('Id_code'=>'Book Code', 'Book_name'=>'Book Name에서 다음 배열 수정을 기반으로 해야 합니다. ',
- 'Book_ISBN'=>'ISBN', 'Contribute_man'=>'출처','Issue_time'=>'출판 시간','Storing_time'=>'저장 시간');
- ?>
p>
- "http://www.w3.org/TR/xhtml1 /DTD/xhtml1-transitional.dtd">
-
- PHP 페이징 데모--www.yuju100.com
- < /head>
- 테이블{
- 여백:0px;
- 패딩:0px ;
- border-collapse:collapse;
- border:1px solid #ff0000;
- }
- table td{
- margin:0px;
- padding:0px;
- border-collapse :collapse;
- 테두리:1px 솔리드 #ff0000;
- }
- / /페이징 데이터 출력
- echo outPutData($arrParameter[' sql'],$arrFields,$resLink);
- ?>
- < ;?php
- //페이징 바 표시
- echo createPagingItem($arrParameter['page'],$arrParameter['start'],$arrParameter['end'],
- $arrParameter['all' ],$arrParameter['tag']);
- ?>
-
코드 복사
|