Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > สอบถามการทำ paging แบบ ย่อครับ จาก ลิ้ง [PHP MySQL Pagination]


[PHP] สอบถามการทำ paging แบบ ย่อครับ จาก ลิ้ง [PHP MySQL Pagination]

 
Topic : 104707



โพสกระทู้ ( 318 )
บทความ ( 0 )



สถานะออฟไลน์



จากที่มา : https://www.thaicreate.com/community/php-mysql-pagination.html

เมื่อผม อยุ่ที่ หน้าที่ 2 - 3 - 4 หรืออื่นๆ ผมกด ตัวเลขได้ กด ปุ่ม next ได้ครับ แต่เมื่อกด Previous แล้วมันเกิด เออเร่อว่า


Error Query [SELECT * FROM tb_pr ORDER BY id DESC LIMIT -5 , 5]

จากโค้ดครับ
Code (PHP)
001.<?php
002.class Paginator{
003.    var $items_per_page;
004.    var $items_total;
005.    var $current_page;
006.    var $num_pages;
007.    var $mid_range;
008.    var $low;
009.    var $high;
010.    var $limit;
011.    var $return;
012.    var $default_ipp;
013.    var $querystring;
014.    var $url_next;
015. 
016.    function Paginator()
017.    {
018.        $this->current_page = 1;
019.        $this->mid_range = 7;
020.        $this->items_per_page = $this->default_ipp;
021.        $this->url_next = $this->url_next;
022.    }
023.    function paginate()
024.    {
025. 
026.        if(!is_numeric($this->items_per_page) OR $this->items_per_page <= 0) $this->items_per_page = $this->default_ipp;
027.        $this->num_pages = ceil($this->items_total/$this->items_per_page);
028. 
029.        if($this->current_page < 1 Or !is_numeric($this->current_page)) $this->current_page = 1;
030.        if($this->current_page > $this->num_pages) $this->current_page = $this->num_pages;
031.        $prev_page = $this->current_page-1;
032.        $next_page = $this->current_page+1;
033. 
034. 
035.        if($this->num_pages > $this->mid_range)/*10*/
036.        {
037.            $this->return = ($this->current_page != 1 And $this->items_total >= $this->mid_range)/*10*/ ? "<a class=\"paginate\" href=\"".$this->url_next.$this->$prev_page."\">&laquo; Previous</a> ":"<span class=\"inactive\" href=\"#\">&laquo; Previous</span> ";
038. 
039.            $this->start_range = $this->current_page - floor($this->mid_range/2);
040.            $this->end_range = $this->current_page + floor($this->mid_range/2);
041. 
042.            if($this->start_range <= 0)
043.            {
044.                $this->end_range += abs($this->start_range)+1;
045.                $this->start_range = 1;
046.            }
047.            if($this->end_range > $this->num_pages)
048.            {
049.                $this->start_range -= $this->end_range-$this->num_pages;
050.                $this->end_range = $this->num_pages;
051.            }
052.            $this->range = range($this->start_range,$this->end_range);
053. 
054.            for($i=1;$i<=$this->num_pages;$i++)
055.            {
056.                if($this->range[0] > 2 And $i == $this->range[0]) $this->return .= " ... ";
057.                if($i==1 Or $i==$this->num_pages Or in_array($i,$this->range))
058.                {
059.                    $this->return .= ($i == $this->current_page And $_GET['PagePR'] != 'All') ? "<a title=\"Go to page $i of $this->num_pages\" class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" title=\"Go to page $i of $this->num_pages\" href=\"".$this->url_next.$i."\">$i</a> ";
060.                }
061.                if($this->range[$this->mid_range-1] < $this->num_pages-1 And $i == $this->range[$this->mid_range-1]) $this->return .= " ... ";
062.            }
063.            $this->return .= (($this->current_page != $this->num_pages And $this->items_total >= $this->mid_range)/*10*/ And ($_GET['PagePR'] != 'All')) ? "<a class=\"paginate\" href=\"".$this->url_next.$next_page."\">Next &raquo;</a>\n":"<span class=\"inactive\" href=\"#\">&raquo; Next</span>\n";
064.        }
065.        else
066.        {
067.            for($i=1;$i<=$this->num_pages;$i++)
068.            {
069.                $this->return .= ($i == $this->current_page) ? "<a class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" href=\"".$this->url_next.$i."\">$i</a> ";
070.            }
071.        }
072.        $this->low = ($this->current_page-1) * $this->items_per_page;
073.        $this->high = ($_GET['ipp'] == 'All') ? $this->items_total:($this->current_page * $this->items_per_page)-1;
074.        $this->limit = ($_GET['ipp'] == 'All') ? "":" LIMIT $this->low,$this->items_per_page";
075.    }
076. 
077.    function display_pages()
078.    {
079.        return $this->return;
080.    }
081.}
082.?>
083.<style type="text/css">
084.<!--
085.    .paginate {
086.    font-family: Arial, Helvetica, sans-serif;
087.    font-size: .7em;
088.    }
089.    a.paginate {
090.    border: 1px solid #000080;
091.    padding: 2px 6px 2px 6px;
092.    text-decoration: none;
093.    color: #000080;
094.    }
095.    h2 {
096.        font-size: 12pt;
097.        color: #003366;
098.        }
099.         
100.         h2 {
101.        line-height: 1.2em;
102.        letter-spacing:-1px;
103.        margin: 0;
104.        padding: 0;
105.        text-align: left;
106.        }
107.    a.paginate:hover {
108.    background-color: #FCF;
109.    color: #FFF;
110.    text-decoration: underline;
111.    }
112.    a.current {
113.    border: 1px solid #000080;
114.    font: bold .7em Arial,Helvetica,sans-serif;
115.    padding: 2px 6px 2px 6px;
116.    cursor: default;
117.    background:#FCF;
118.    color: #FFF;
119.    text-decoration: none;
120.    }
121.    span.inactive {
122.    border: 1px solid #999;
123.    font-family: Arial, Helvetica, sans-serif;
124.    font-size: .7em;
125.    padding: 2px 6px 2px 6px;
126.    color: #999;
127.    cursor: default;
128.    }
129.-->
130.</style>
131.<html>
132.<head>
133.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
134.<title></title>
135.</head>
136. 
137.<body>
138.<?php
139.include("db_conn.inc.php");
140.$strSQL = "SELECT * FROM tb_pr";
141.$objQuery = mysql_query($strSQL)or die ("Error Query [".$strSQL."]");
142.$Num_Rows = mysql_num_rows($objQuery);
143. 
144.$Per_Page = 5;
145. 
146.$Page = isset($_GET['PagePR']) ? $_GET['PagePR'] : 1;
147. 
148.$Prev_Page = $Page-1;
149.$Next_Page = $Page+1;
150. 
151.$Page_Start = (($Per_Page*$Page)-$Per_Page);
152.if($Num_Rows<=$Per_Page)
153.{
154.    $Num_Pages =1;
155.}
156.else if(($Num_Rows % $Per_Page)==0)
157.{
158.    $Num_Pages =($Num_Rows/$Per_Page);
159.}
160.else
161.{
162.    $Num_Pages =($Num_Rows/$Per_Page)+1;
163.    $Num_Pages = (int)$Num_Pages;
164.}
165. 
166.$strSQL .= " ORDER BY id  DESC LIMIT $Page_Start , $Per_Page";
167.$objQuery  = mysql_query($strSQL)or die ("Error Query [".$strSQL."]");
168.?>
169.<br />
170. 
171.<?php
172.$news_item=0;
173.while($objResult = mysql_fetch_assoc($objQuery))
174.{
175.    $pr_send = $objResult["id"];
176.?>
177.    <ul>
178.    <li>
179.            <a href="index2.php?page=detailPR&id_pr=<?=$pr_send;?>" target="_blank"><?=$objResult["Topic"];?></a>
180.            <br>
181.            <?=date("d-m-Y H:i:s",strtotime($objResult["Date_Post"]));?>
182.            <?php
183.            $strSQL2 = "SELECT * FROM tb_pr WHERE id= '$objResult[id]' ";
184.            $objQuery2 = mysql_query($strSQL2)or die(mysql_error());
185.            $objResult2 = mysql_fetch_array($objQuery2);
186.             
187.            $strDateAdd = date('Y-m-d',strtotime("-7 day"));
188.            if($objResult["Date_Post"]>=$strDateAdd)
189.            {
190.                echo "<img src=\"img/new.gif\"> ";
191.            }
192.            ?>
193.    </li>
194.    </ul>
195.<?php
196.}
197.?>
198.<table width="550" border="0" cellspacing="0">
199.  <tr>
200.    <td width="562" align="center" class="table">
201.    <?php
202.            $pages = new Paginator;
203.            $pages->items_total = $Num_Rows;
204.            $pages->mid_range = 3;
205.            $pages->current_page = $Page;
206.            $pages->default_ipp = $Per_Page;
207.            $pages->url_next = $_SERVER["PHP_SELF"]."?live=home&QueryString=value&PagePR=";
208.             
209.            $pages->paginate();
210.             
211.            echo $pages->display_pages();
212.    ?>
213.    </td>
214.  </tr>
215.</table>
216.<?php
217.mysql_close();
218.?>
219.</body>
220.</html>




Tag : PHP, MySQL



ประวัติการแก้ไข
2014-01-17 13:00:57
2014-01-17 13:02:02
2014-01-17 13:05:35
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-01-17 12:59:51 By : angelkiller9 View : 1731 Reply : 5
 

 

No. 1



โพสกระทู้ ( 318 )
บทความ ( 0 )



สถานะออฟไลน์


ผมทำตามในเว็บนี้แล้ว กด previous มีปัญหาเหมือนกันครับ
อยากได้แบบนำมาใช้ได้จริง

ขอบคุณก๊าบ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-17 14:21:01 By : angelkiller9
 

 

No. 2



โพสกระทู้ ( 2,311 )
บทความ ( 1 )



สถานะออฟไลน์


อีกทางเลือก
https://www.thaicreate.com/community/php-mysql-split-page-with-kgpager-class.html.html
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-17 21:42:04 By : arm8957
 

 

No. 3



โพสกระทู้ ( 318 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : arm8957 เมื่อวันที่ 2014-01-17 21:42:04
รายละเอียดของการตอบ ::
ขอบคุณค๊าบ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-20 10:41:25 By : angelkiller9
 

 

No. 4



โพสกระทู้ ( 318 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : arm8957 เมื่อวันที่ 2014-01-17 21:42:04
รายละเอียดของการตอบ ::
ปรากฏว่า ผมทดลองใช้แล้วมันไม่ได้อ่ะครับทำไงอ่า


ผมมีไฟล์ kgPager.class.php แล้วนะครับ ทำตาม ลิ้ง https://www.thaicreate.com/community/php-mysql-split-page-with-kgpager-class.html.html

Code (PHP)
01.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
03.<head>
04.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
05.<title>Pagingation</title>
06.<style type="text/css">
07.body { font:0.8em/1.8em tahoma, helvetica, sans serif; color#333; }
08.#pager_links a { text-decoration:none; color:#ff3300; background:#fff; border:1px solid #e0e0e0; padding:1px 4px 1px 4px; margin:2px; }
09.#pager_links a:hover { text-decoration:none; color:#3399ff; background:#f2f2f2; border:1px solid #3399ff; padding:1px 4px 1px 4px; margin:2px; }
10.#current_page { border:1px solid #333; padding:1px 4px 1px 4px; margin:2px; color:#333; }
11.</style>
12.</head>
13. 
14. 
15.<body>
16.<?php
17.$objConnect = mysql_connect("127.0.0.1","","") or die("Error Connect to Database");
18.$objDB = mysql_select_db("apr");
19.mysql_query("SET NAMES 'utf8'");
20.error_reporting(0);
21.require_once('kgPager.class.php');
22.(empty($_GET['page']))? $page = 1: $page = $_GET['page'];
23.$query = "SELECT * FROM tb_pr";
24.$sql = mysql_query($query) or die ("Error Query [".$query."]");
25.$Num_Rows = mysql_num_rows($objQuery);
26.$scroll_page = 3;//จำนวนแบ่งหน้าที่จะให้แสดง คือ <ก่อนหน้า , 1 , 2 , 3 , ต่อไป>
27.$per_page = 5;//จำนวนข้อมูลที่ต้องการแสดงในแต่ละหน้า
28.$current_page = $page; //รับค่าเพจ
29.$pager_url = 'pagging.php?page='; //URL ตามตัวครับ
30.$inactive_page_tag = 'id="current_page"'; //ตำแหน่งหน้าปัจจุบัน ไม่ต้องระบุค่าอะไรทั้งนั้น
31.$previous_page_text = '&lt; ย้อนกลับ'; //ปุ่มย้อนกลับ จะใส่ตัวหนังสือหรือภาพก็ได้ตามสไตล์
32.$next_page_text = 'ถัดไป &gt;'; //ปุ่มถัดไป จะใส่ตัวหนังสือหรือภาพก็ได้ตามสไตล์
33.$first_page_text = '&lt;&lt; หน้าแรก'; //ปุ่มหน้าแรก
34.$last_page_text = 'หน้าสุดท้าย &gt;&gt;'; //ปุ่มหน้าสุดท้าย
35. 
36.$kgPagerOBJ = new KgPager(); #เรียกใช้งาน class
37.$kgPagerOBJ -> pager_set($pager_url, $total_records, $scroll_page, $per_page, $current_page, $inactive_page_tag, $previous_page_text, $next_page_text, $first_page_text, $last_page_text, $pager_url_last);
38. 
39.#-------------ส่วนแสดงผลจำนวน record ทั้งหมด--------------#
40.echo '<p><strong>Toplam Sayfa :</strong>';
41.echo $kgPagerOBJ -> total_pages;
42.echo '</p>';
43. 
44.#-------------จบส่วนแสดงผลจำนวน record ทั้งหมด--------------#
45. 
46.$sql = mysql_query($query." ORDER BY TopicID ASC LIMIT ".$kgPagerOBJ -> start.", ".$kgPagerOBJ -> per_page."");
47.?>
48.<table width="600" border="1">
49.  <tr>
50.    <th width="50"> <div align="center">TopicID </div></th>
51.    <th width="534"> <div align="center">Topic </div></th>
52.  </tr>
53.<?php
54.while($objResult = mysql_fetch_assoc($sql))
55.{
56.?>
57.  <tr>
58.    <td><div align="center"><?=$objResult["TopicID"];?></div></td>
59.    <td><?=$objResult["Topic"];?></td>
60.  </tr>
61.<?php
62.}
63.?>
64.</table>
65. 
66.<br>
67.<?php
68.#------ตัวแบ่งหน้า คือ <ก่อนหน้า , 1 , 2 , 3 , ต่อไป> จะเอาไปแปะตรงไหนก็ได้ในหน้าเพจ----#
69.echo '<p id="pager_links">';
70.echo $kgPagerOBJ -> first_page;
71.echo $kgPagerOBJ -> previous_page;
72.echo $kgPagerOBJ -> page_links;
73.echo $kgPagerOBJ -> next_page;
74.echo $kgPagerOBJ -> last_page;
75.echo '</p>';
76.?>  
77. 
78.<?php
79.mysql_close($objConnect);
80.?>
81.</body>
82.</html>


มันก็ยังไม่ได้ครับ ตามรูป ไม่มีอะไรขึ้นเรย :'(
รูปของโค้ด
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-21 13:57:29 By : angelkiller9
 

 

No. 5



โพสกระทู้ ( 318 )
บทความ ( 0 )



สถานะออฟไลน์


เอ่อออ ได้ละครับ ผมตั้งตัวแปรผิด อิอิ ขอโต๊ดค๊าบบบ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-21 14:22:28 By : angelkiller9
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามการทำ paging แบบ ย่อครับ จาก ลิ้ง [PHP MySQL Pagination]
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่