찾다
백엔드 개발PHP 튜토리얼공유: PHP 페이지 넘기기(페이징) 클래스의 예제 코드

  1. /**
  2. * filename: ext_page.class.php
  3. * @package:phpbean
  4. * descrīption:超強分頁類,四種分頁模式,預設為類似baidu,google的分頁風格。
  5. * 2.0增加功能:支援自訂風格,自訂樣式,同時支援PHP4和PHP5,
  6. * example:
  7. * 模式四種分頁模式:
  8. require_once('../libs/ classes/page.class.php');
  9. $page=new page(array('total'=>1000,'perpage'=>20));
  10. echo 'mode:1
    '. $page->show();
  11. echo '
    mode:2
    '.$page->show(2);
  12. echo '
    mode:3
    '.$ page->show(3);
  13. echo '
    mode:4
    '.$page->show(4);
  14. 開啟AJAX:
  15. $ajaxpage=new page(array( 'total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test'));
  16. echo 'mode:1
    '.$ajaxpage- >show();
  17. 採用繼承自訂分頁顯示模式。
  18. 編輯整理:腳本學堂 http://bbs.it-home.org
  19. */
  20. class _page
  21. {
  22. /**
  23. * 配置,公用
  24. class _page
  25. {
  26. /**
  27. * 私人
  28. *
  29. /
  30. var $page_name="PB_page";//page標籤,用來控制url頁。例如說xxx.php?PB_page=2中的PB_page
  31. var $next_page='>';//下一頁
  32. var $pre_page=' var $first_page ='First';//首頁
  33. var $last_page='Last';//尾頁
  34. var $pre_bar=' var $next_bar='> >';//下一分頁條
  35. var $format_left='[';
  36. var $format_right=']';
  37. var $is_ajax=false;//是否支援AJAX分頁模式
  38. /**
  39. * 建構子建構子
  40. *
  41. * @param array $array['total'],$array['perpage'],$array['nowindex'],$array['url'] , $array['ajax']...
  42. */
  43. var $pagebarnum=10;//控制記錄條的數量。
  44. var $totalpage=0;//總頁數
  45. var $ajax_action_name='';//AJAX動作名稱
  46. var $nowindex=1;//目前頁
  47. var $url=" ";//url位址頭
  48. var $offset=0;
  49. /**
  50. * 設定類別中指定變數名稱的值,如果改變量不屬於這個類,將throw一個exception
  51. *
  52. * @param string $var
  53. * @param string $value
  54. */
  55. function page($array)
  56. {
  57. if(is_array( $array)){
  58. if(!array_key_exists('total',$array))$this->error(__FUNCTION__,'need a param of total');
  59. $total=intval($array[' total']);
  60. $perpage=(array_key_exists('perpage',$array))?intval($array['perpage']):10;
  61. $nowindex=(array_key_exists('nowindex',$ array))?intval($array['nowindex']):'';
  62. $url=(array_key_exists('url',$array))?$array['url']:'';
  63. }else{
  64. $total=$array;
  65. $perpage=10;
  66. $nowindex='';
  67. $url='';
  68. }
  69. if((!is_int ($total))||($totalerror(__FUNCTION__,$total.' is not a positive integer!');
  70. if((!is_int($perpage))|| ($perpageerror(__FUNCTION__,$perpage.' is not a positive integer!');
  71. if(!empty($array['page_name']))$this-> set('page_name',$array['page_name']);//設定pagename
  72. $this->_set_nowindex($nowindex);//設定目前頁面
  73. $this->_set_url($url); //設定連結位址
  74. $this->totalpage=ceil($total/$perpage);
  75. $this->offset=($this->nowindex-1)*$perpage;
  76. if( !empty($array['ajax']))$this->open_ajax($array['ajax']);//開啟AJAX模式
  77. }
  78. /***/
  79. function set($var,$value)
  80. {
  81. if(in_array($var,get_object_vars($this)))
  82. $this->$var=$value;
  83. else {
  84. $this->$var=$value;
  85. else {
  86. $this->error(__FUNCTION__,$var." does not belong to PB_Page!");
  87. }
  88. } /** * 開啟倒AJAX模式 * * @param string $action 預設ajax觸發的動作。
  89. */
  90. function open_ajax($action)
  91. {
  92. $this->is_ajax=true;
  93. $this->ajax_action_name=$action;
  94. }
  95. /**
  96. * "다음 페이지"를 표시하는 코드 가져오기
  97. *
  98. * @param string $style
  99. * @return string
  100. */
  101. function next_page($style='')
  102. {
  103. if($this->nowindextotalpage) {
  104. return $this->_get_link($this->_get_url($this->nowindex 1),$this->next_page,$style);
  105. }
  106. return ''.$this->next_page.'';
  107. }
  108. /**
  109. * "이전 페이지"를 표시하는 코드 가져오기
  110. *
  111. * @param string $style
  112. * @return string
  113. */
  114. 함수 pre_page($style='')
  115. {
  116. if($this->nowindex>1){
  117. return $this->_get_link($this->_get_url($this->nowindex-1),$this->pre_page,$style);
  118. }
  119. return ''.$this->pre_page.'';
  120. }
  121. /**
  122. * "홈 페이지"를 표시하는 코드 가져오기
  123. *
  124. * @return string
  125. */
  126. function first_page($style='')
  127. {
  128. if($this->nowindex==1){
  129. return ''.$this->first_page.'';
  130. }
  131. return $this->_get_link($this->_get_url(1),$this->first_page,$style);
  132. }
  133. /**
  134. * "마지막 페이지"를 표시하는 코드 가져오기
  135. *
  136. * @return string
  137. */
  138. function last_page($style='')
  139. {
  140. if($this->nowindex==$this- >totalpage){
  141. return ''.$this->last_page.'';
  142. }
  143. return $this->_get_link($this->_get_url($this->totalpage),$this->last_page,$style);
  144. }
  145. function nowbar($style='',$nowindex_style='')
  146. {
  147. $plus=ceil($this->pagebarnum/2);
  148. if($this->pagebarnum-$plus $this->nowindex>$this->totalpage)$plus=($this->pagebarnum-$this->totalpage $this-> 지금색인);
  149. $begin=$this->nowindex-$plus 1;
  150. $begin=($begin>=1)?$begin:1;
  151. $return='';
  152. for($i=$begin;$ipagebarnum;$i )
  153. {
  154. if($itotalpage){
  155. if($i!=$this->nowindex)
  156. $return.=$this->_get_text($this->_get_link($this->_get_url($i),$i,$style )));
  157. else
  158. $return.=$this->_get_text(''.$i.'');
  159. }else{
  160. break;
  161. }
  162. $return.="n";
  163. }
  164. unset($begin);
  165. 반환 $return;
  166. }
  167. /**
  168. * 점프 버튼을 표시하는 코드 가져오기
  169. *
  170. * @return string
  171. */
  172. function select()
  173. {
  174. $return='';
  175. 반환 $return;
  176. }
  177. /**
  178. * mysql 문에서 제한에 필요한 값을 가져옵니다.
  179. *
  180. * @return string
  181. */
  182. function offset()
  183. {
  184. return $this->offset;
  185. }
  186. /**
  187. * 페이징 표시 스타일 제어(해당 스타일 추가 가능)
  188. *
  189. * @param int $mode
  190. * @return string
  191. */
  192. function show($mode=1)
  193. {
  194. 스위치($mode)
  195. {
  196. case '1':
  197. $this->next_page='下一页';
  198. $this->pre_page='상일页';
  199. return $this->pre_page().$this->nowbar().$this->next_page().'第'.$this->select().'页';
  200. 휴식;
  201. 사례 '2':
  202. $this->next_page='下一页';
  203. $this->pre_page='상일页';
  204. $this->first_page='首页';
  205. $this->last_page='尾页';
  206. return $this->first_page().$this->pre_page().'[第'.$this->nowindex.'页]'.$this->next_page().$this ->last_page().'第'.$this->select().'页';
  207. 휴식;
  208. 사례 '3':
  209. $this->next_page='下一页';
  210. $this->pre_page='상일页';
  211. $this->first_page='首页';
  212. $this->last_page='尾页';
  213. return $this->first_page().$this->pre_page().$this->next_page().$this->last_page();
  214. 휴식;
  215. 사례 '4':
  216. $this->next_page='下一页';
  217. $this->pre_page='상일页';
  218. return $this->pre_page().$this->nowbar().$this->next_page();
  219. 휴식;
  220. 케이스 '5':
  221. return $this->pre_bar().$this->pre_page().$this->nowbar().$this->next_page().$this ->next_bar();
  222. 휴식;
  223. 케이스 '6':
  224. return $this->select();
  225. 휴식;
  226. 케이스 '7':
  227. return $this->nowbar();
  228. 휴식;
  229. }
  230. }
  231. /*---프라이빗 함수(私유방법)------------ ---------------------*/
  232. /**
  233. * URL 헤더 주소 설정
  234. * @param: String $url
  235. * @return boolean
  236. */
  237. function _set_url($url="")
  238. {
  239. if(!empty($url)){
  240. //手动设置
  241. $ this->url=$url.((stristr($url,'?'))?'&':'?').$this->page_name."=";
  242. }else{
  243. //自动获取
  244. if(empty($_SERVER['QUERY_STRING'])){
  245. //불存재QUERY_STRING时
  246. $this->url=$ _SERVER['REQUEST_URI']."?".$this->page_name."=";
  247. }else{
  248. //
  249. if(stristr($_SERVER['QUERY_STRING'],$this->page_name.'=')){
  250. //지대면参数
  251. $this->url=str_replace($this->page_name.'='.$this->nowindex,'',$_SERVER['REQUEST_URI']);
  252. $last=$this->url[strlen($this->url)-1];
  253. if($last=='?'||$last=='&'){
  254. $this->url.=$this->page_name."=";
  255. }else{
  256. $this->url.='&'.$this->page_name."=";
  257. }
  258. }else{
  259. //
  260. $this->url=$_SERVER['REQUEST_URI'].'&'.$this->page_name.'=';
  261. }//end if
  262. }//end if
  263. }//end if
  264. }
  265. /**
  266. * 현재 페이지 설정
  267. *
  268. */
  269. function _set_nowindex($nowindex )
  270. {
  271. if(empty($nowindex)){
  272. //系统获取
  273. if(isset($_GET[$this->page_name])){
  274. $this->nowindex=intval($_GET[$this->페이지_이름]);
  275. }
  276. if(isset($_POST['PB_Page_Select'])){
  277. $this->nowindex=$_POST['PB_Page_Select'];
  278. }
  279. }else{
  280. //수공축
  281. $this->nowindex=intval($nowindex);
  282. }
  283. }
  284. /**
  285. * 지정된 페이지의 주소 값을 반환합니다.
  286. *
  287. * @param int $pageno
  288. * @return string $url
  289. */
  290. function _get_url($pageno=1)
  291. {
  292. return $this->url.$pageno ;
  293. }
  294. /**
  295. * 페이지 매기기 표시 텍스트 가져오기. 예를 들어 기본적으로 _get_text('1')는 [1를 반환합니다. ]
  296. *
  297. * @param String $str
  298. * @return string $url
  299. */
  300. function _get_text($str)
  301. {
  302. return $this->format_left.$str.$this-> 형식_오른쪽;
  303. }
  304. /**
  305. * 링크 주소 받기
  306. */
  307. function _get_link($url,$text,$style=''){
  308. $style=(empty($style)) ?'':'class="'.$style.'"';
  309. if($this->is_ajax){
  310. //如果是使用AJAX模式
  311. return ''.$text.'';
  312. }else{
  313. return ''.$text.'';
  314. }
  315. }
  316. /**
  317. * 오류 처리
  318. */
  319. 함수 오류($function,$errormsg)
  320. {
  321. die('파일 '.__FILE__에 오류가 있습니다.' ,Function '.$function.'() :'.$errormsg)
  322. }
  323. }
  324. // 페이징 클래스 상속 및 데이터베이스 액세스 추가 Capability .
  325. class Page 확장 _Page {
  326. var $db; //db 연결 개체
  327. var $_Sql_Query = '' //데이터베이스의 SQL 쿼리
  328. var $_Total = 0; /쿼리 전체 레코드는
  329. var $_Rst = array(); //쿼리된 레코드입니다.
  330. /**
  331. * 페이징 쿼리 라이브러리
  332. *
  333. * @param String $Sql 레코드 쿼리용 SQL 문
  334. * @param int $pagenuber 페이지당 레코드 수
  335. * @param int $ pagen 현재 페이지
  336. * @param String $url 페이징 링크에서 가져온 매개변수 index.php?xx=b&bb=33
  337. * @param String $pname 현재 페이지의 표시, 기본값은 index입니다. .php?xx=b&bb=33&page=2 특별한 요구사항이 있는 경우
  338. $pname의 매개변수를 수정할 수 있습니다. 예: $pname='db_page', index.php?xx=b&bb=33&db_page= 2
  339. * @return Mysql_Page
  340. */
  341. 함수 페이지($db, $ sql_query = '', $max_rows_per_page = 20, $current_page_number = 0, $url = '', $parameters = '', $pname = 'PB_page',$otc = '*') {
  342. $this -> db = $db;
  343. $pos_to = strlen($sql_query);
  344. $pos_from = strpos($sql_query, 'from', 0)
  345. $pos_group_by = strpos($sql_query, '그룹별' , $ pos_from)
  346. if (($pos_group_by $pos_having = strpos($sql_query, 'having', $pos_from );
  347. if (($pos_having $pos_order_by = strpos($sql_query, 'order by', $pos_from);
  348. if (($pos_order_by $reviews_count = $this -> ($otc) as total " . substr($sql_query, $pos_from, ($pos_to - $pos_from)));
  349. $query_num_rows = $reviews_count[0]['total'];
  350. $this -> ; _Total = $ query_num_rows;
  351. $num_pages = ceil($query_num_rows / $max_rows_per_page)
  352. if ($current_page_number > $num_pages) {
  353. $current_page_number = $num_pages; $offset = ( $max_rows_per_page * ($current_page_number - 1));
  354. if ($offset if ($offset > 0) {
  355. $offset = $ 오프셋 1; $this -> 데이터베이스
  356. parent :: page(array('total' => $query_num_rows, 'perpage' => $max_rows_per_page, 'page_name' => $pname, 'url' => $url, 'parameters) ' => $ 매개변수));
  357. }
  358. /**
  359. * 현재 페이지의 기록을 가져와서 배열을 반환합니다.
  360. */
  361. function findByAll() {
  362. return $this ->
  363. /* *
  364. * 페이징 정보 표시
  365. *
  366. * @param int $model
  367. */
  368. function dispaly_links($model) {
  369. $this -> show($model)
  370. }
  371. /**
  372. * 레코드 수를 반환합니다.
  373. *
  374. * @return Int
  375. */
  376. function getCount () {
  377. return $this ->
  378. }
  379. /**
  380. * 쿼리 결과 레코드 개수를 가져옵니다..
  381. *
  382. * @return Int
  383. */
  384. function getRows() {
  385. return count($this -> _Rst) ;
  386. }
  387. /**
  388. * 쿼리 기능 실행
  389. * 배열 계산
  390. * 프라이빗 메소드
  391. */
  392. function setData() {
  393. $this -> $this -> _Sql_Query)
  394. }
  395. }
  396. ?>
  397. 코드 복사
  398. >
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP의 목적 : 동적 웹 사이트 구축PHP의 목적 : 동적 웹 사이트 구축Apr 15, 2025 am 12:18 AM

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

PHP : 데이터베이스 및 서버 측 로직 처리PHP : 데이터베이스 및 서버 측 로직 처리Apr 15, 2025 am 12:15 AM

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo)PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo)Apr 15, 2025 am 12:15 AM

PHP에서 전처리 문과 PDO를 사용하면 SQL 주입 공격을 효과적으로 방지 할 수 있습니다. 1) PDO를 사용하여 데이터베이스에 연결하고 오류 모드를 설정하십시오. 2) 준비 방법을 통해 전처리 명세서를 작성하고 자리 표시자를 사용하여 데이터를 전달하고 방법을 실행하십시오. 3) 쿼리 결과를 처리하고 코드의 보안 및 성능을 보장합니다.

PHP 및 Python : 코드 예제 및 비교PHP 및 Python : 코드 예제 및 비교Apr 15, 2025 am 12:07 AM

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

PHP 실행 : 실제 예제 및 응용 프로그램PHP 실행 : 실제 예제 및 응용 프로그램Apr 14, 2025 am 12:19 AM

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP : 대화식 웹 컨텐츠를 쉽게 만들 수 있습니다PHP : 대화식 웹 컨텐츠를 쉽게 만들 수 있습니다Apr 14, 2025 am 12:15 AM

PHP를 사용하면 대화식 웹 컨텐츠를 쉽게 만들 수 있습니다. 1) HTML을 포함하여 컨텐츠를 동적으로 생성하고 사용자 입력 또는 데이터베이스 데이터를 기반으로 실시간으로 표시합니다. 2) 프로세스 양식 제출 및 동적 출력을 생성하여 htmlspecialchars를 사용하여 XSS를 방지합니다. 3) MySQL을 사용하여 사용자 등록 시스템을 작성하고 Password_Hash 및 전처리 명세서를 사용하여 보안을 향상시킵니다. 이러한 기술을 마스터하면 웹 개발의 효율성이 향상됩니다.

PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다Apr 14, 2025 am 12:13 AM

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP의 지속적인 관련성 : 여전히 살아 있습니까?PHP의 지속적인 관련성 : 여전히 살아 있습니까?Apr 14, 2025 am 12:12 AM

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구