<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>pagination - การเขียนโปรแกรม, เทคโนโลยี</title>
	<atom:link href="https://www.itoffside.com/tag/pagination/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.itoffside.com</link>
	<description>ข้อมูลข่าวสารและเรื่องราวบนโลกของไอทีที่ ล้ำหน้า พร้อมสาระการเขียนโปรแกรมคอมพิวเตอร์</description>
	<lastBuildDate>Mon, 25 Apr 2022 19:13:28 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://www.itoffside.com/wp-content/uploads/2020/04/cropped-favicon-96x96-1-32x32.png</url>
	<title>pagination - การเขียนโปรแกรม, เทคโนโลยี</title>
	<link>https://www.itoffside.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Laravel WorkShop ระบบ Blog และ Login</title>
		<link>https://www.itoffside.com/laravel-workshop-blog-and-login/</link>
					<comments>https://www.itoffside.com/laravel-workshop-blog-and-login/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Thu, 31 Mar 2022 21:56:48 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQLi]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PHP Framework]]></category>
		<category><![CDATA[workshop]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=3316</guid>

					<description><![CDATA[<p>ระบบจัดการ Blog สามารถ เพิ่ม แก้ไข ลบ และแสดงรายการ ได้ มีการตรวจสอบการกรอกข้อมูล และมีระบบยืนยันตัวตนผ่านการล๊อกอิน(Login) เป็นระบบ workshop laravel อย่างง่ายๆ ให้ผู้อ่านผู้ชม ได้เห็นการเขียนโปรแกรมด้วย laravel ว่าเขียนประมาณไหนบ้าง พาใช้งาน Laravel ผ่าน Workshop Blog/Login เพื่อนๆจะได้รู้จักกับ การสร้าง Controller, Model, View &#8211; การกำหนด Route ของ Web (GET, POST, PUT, DELETE) การทำ...</p>
<p>The post <a href="https://www.itoffside.com/laravel-workshop-blog-and-login/">Laravel WorkShop ระบบ Blog และ Login</a> first appeared on <a href="https://www.itoffside.com">การเขียนโปรแกรม, เทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>ระบบจัดการ Blog</strong> สามารถ เพิ่ม แก้ไข ลบ และแสดงรายการ ได้ มีการตรวจสอบการกรอกข้อมูล และมีระบบยืนยันตัวตนผ่านการล๊อกอิน(Login) เป็นระบบ <strong>workshop laravel</strong> อย่างง่ายๆ ให้ผู้อ่านผู้ชม ได้เห็นการเขียนโปรแกรมด้วย <strong>laravel</strong> ว่าเขียนประมาณไหนบ้าง</p>
<p><span class="style-scope yt-formatted-string" dir="auto">พาใช้งาน <strong>Laravel</strong> ผ่าน <strong>Workshop Blog/Login</strong> เพื่อนๆจะได้รู้จักกับ</span></p>
<ul>
<li><span class="style-scope yt-formatted-string" dir="auto">การสร้าง <strong>Controller, Model, View</strong> &#8211; การกำหนด Route ของ Web (GET, POST, PUT, DELETE)</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Migrate</strong> ของ database</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Middleware</strong> และการใช้งาน middleware ผ่าน <strong>Route</strong></span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ Authen login แบบ Manual</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>CRUD</strong> ของ Blog</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Paginate</strong> แบ่งหน้า</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Validate</strong> form</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Relation</strong> ของ ORM (One to Many)</span></li>
</ul>
<p><span id="more-3316"></span></p>
<p>วิดีโอประกอบการสอน workshop</p>
<p><iframe title="Laravel Workshop ระบบ Blog และ Login" width="660" height="371" src="https://www.youtube.com/embed/wA75lGFF9E8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p><span class="style-scope yt-formatted-string" dir="auto">ดาวน์โหลด Sourcecode </span><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://github.com/ipball/Laravel-Blog" target="_blank" rel="nofollow noopener">https://github.com/ipball/Laravel-Blog</a></p><p>The post <a href="https://www.itoffside.com/laravel-workshop-blog-and-login/">Laravel WorkShop ระบบ Blog และ Login</a> first appeared on <a href="https://www.itoffside.com">การเขียนโปรแกรม, เทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-workshop-blog-and-login/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Pagination แบ่งหน้าการแสดงผลด้วย Codeigniter (PHP Mysql)</title>
		<link>https://www.itoffside.com/pagination-codeigniter-php-mysql/</link>
					<comments>https://www.itoffside.com/pagination-codeigniter-php-mysql/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Wed, 03 Feb 2016 17:30:31 +0000</pubDate>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2541</guid>

					<description><![CDATA[<p>บทความนี้เป็นการสอนการแบ่งหน้า(Pagination) โดยใช้ Library ของ Codeigniter ซึ่งการแบ่งหน้าเป็นสิ่งหนึ่งที่จำเป็นต้องมีในเว็บแอพลิเคชั่น ซึ่งก็แล้วแต่เทคนิคและลักษณะกันไป ประโยชน์ของการแบ่งหน้าช่วยให้หน้าเว็บไซต์ของเราไม่ยืดยาวและโหลดเร็วขึ้น แน่นอนว่าสำหรับบทความนี้ จะสอนแบบอธิบายให้เข้าใจง่ายๆ นะครับ มาเริ่มกันเลยครับ เตรียมความพร้อม! 1. PHP เวอร์ชั่น 5.6 2. MySQL เวอร์ชั่น  5.6 3. Tool PHP MyAdmin 4. Codeigniter Framework เวอร์ชั่น 3.0.4 5. Editor ในตัวอย่างบทความนี้ผมใช้ Atom 1.0 นะครับ วิธีการ/ขั้นตอน Import...</p>
<p>The post <a href="https://www.itoffside.com/pagination-codeigniter-php-mysql/">Pagination แบ่งหน้าการแสดงผลด้วย Codeigniter (PHP Mysql)</a> first appeared on <a href="https://www.itoffside.com">การเขียนโปรแกรม, เทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>บทความนี้เป็นการสอนการแบ่งหน้า(<span style="color: #ff00ff;"><strong><span style="text-decoration: underline;">Pagination</span></strong></span>) โดยใช้ Library ของ <span style="color: #ff00ff;"><strong>Codeigniter</strong> </span>ซึ่งการแบ่งหน้าเป็นสิ่งหนึ่งที่จำเป็นต้องมีในเว็บแอพลิเคชั่น ซึ่งก็แล้วแต่เทคนิคและลักษณะกันไป ประโยชน์ของการแบ่งหน้าช่วยให้หน้าเว็บไซต์ของเราไม่ยืดยาวและโหลดเร็วขึ้น แน่นอนว่าสำหรับบทความนี้ จะสอนแบบอธิบายให้เข้าใจง่ายๆ นะครับ มาเริ่มกันเลยครับ<span id="more-2541"></span></p>
<p><strong><span style="color: #ff99cc;"><em>เตรียมความพร้อม!</em></span></strong><br />
1. PHP เวอร์ชั่น 5.6<br />
2. MySQL เวอร์ชั่น  5.6<br />
3. Tool PHP MyAdmin<br />
4. Codeigniter Framework เวอร์ชั่น 3.0.4<br />
5. Editor ในตัวอย่างบทความนี้ผมใช้ Atom 1.0 นะครับ</p>
<p><span style="color: #ff99cc;"><em><strong>วิธีการ/ขั้นตอน</strong></em></span></p>
<h2>Import SQL</h2>
<p>Import ตารางข้อมูล Product ก่อน Code SQL ด้านล่างนี้ครับ</p><pre class="crayon-plain-tag">--
-- Table structure for table `products`
--

CREATE TABLE IF NOT EXISTS `products` (
  `id` int(11) NOT NULL,
  `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `price` decimal(8,2) NOT NULL,
  `status` tinyint(1) NOT NULL DEFAULT '1'
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Dumping data for table `products`
--

INSERT INTO `products` (`id`, `name`, `price`, `status`) VALUES
(1, 'iPhone 6 Plus', '25000.00', 1),
(2, 'iPhone 6', '22000.00', 1),
(3, 'True SMART 4.0', '5000.00', 1),
(4, 'Samsung Galaxy ALPHA', '12000.00', 1),
(5, 'Samsung Galaxy Note', '23000.00', 1),
(6, 'iPhone 5S', '20000.00', 1),
(7, 'Samsung Galaxy S5', '20000.00', 1),
(8, 'Galaxy K Zoom 3G', '21000.00', 1),
(9, 'OPPO Joy Plus', '4500.00', 1),
(10, 'Galaxy S DUOS 2', '3900.00', 1),
(11, 'OPPO Joy Plus', '3490.00', 1),
(12, 'Huawei Alek 4G', '5460.00', 1),
(13, 'Huawei P8 Lite', '7900.00', 1),
(14, 'OPPO N1 Mini', '9900.00', 1),
(15, 'Samsung Galaxy E7', '11500.00', 1),
(16, 'LG G4', '22900.00', 1),
(17, 'i-Mobile IQ X Lucus', '5900.00', 1),
(18, 'i-mobile I-Style 8.3', '4990.00', 1),
(19, 'I-Mobile I-Style 210', '2490.00', 1),
(20, 'i-mobile IQ 5.7', '4490.00', 1),
(21, 'Galaxy Win 4.7', '7900.00', 1),
(22, 'Galaxy Note 3 LTE', '19900.00', 1),
(23, 'Nokia Lumia 630', '4990.00', 1);

--
-- Indexes for dumped tables
--

--
-- Indexes for table `products`
--
ALTER TABLE `products`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `products`
--
ALTER TABLE `products`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=24;</pre><p></p>
<h2>Model</h2>
<p>เริ่มเขียน Code ในส่วนของ Model ตามตัวอย่างนี้ผมสร้างไฟล์ชื่อ <strong>Product_model.php</strong> ไว้ใน<span style="color: #ff00ff;"> [ชื่อโปรเจค]\Application\models\Product_model.php</span> ตามรูปภาพด้านล่าง<br />
<img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-2561" src="https://www.itoffside.com/wp-content/uploads/2016/02/pagination-01.jpg" alt="pagination-01" width="291" height="680" srcset="https://www.itoffside.com/wp-content/uploads/2016/02/pagination-01.jpg 291w, https://www.itoffside.com/wp-content/uploads/2016/02/pagination-01-128x300.jpg 128w" sizes="(max-width: 291px) 100vw, 291px" /><br />
สร้างไฟล์จากนั้นนำ code ไปใส่ในไฟล์นี้ครับ</p><pre class="crayon-plain-tag">&lt;?php
class Product_model extends CI_Model{
  public function __construct(){
    parent::__construct();
  }

  public function record_count(){
    return $this-&gt;db-&gt;count_all("products");
  }

  public function fetch_product($limit, $start) {
        $this-&gt;db-&gt;limit($limit, $start);
        $query = $this-&gt;db-&gt;get("products");

        if ($query-&gt;num_rows() &gt; 0) {
            foreach ($query-&gt;result() as $row) {
                $data[] = $row;
            }
            return $data;
        }
        return false;
   }
}</pre><p>จากตัวอย่าง code ด้านบนเป็นการใช้งาน <span style="text-decoration: underline;">Active Record</span> เพื่อค้นหาจำนวนแถวทั้งหมด และดึงข้อมูลจากตาราง products</p>
<p>เมธอด record_count() ทำหน้าที่ return ค่า จำนวนแถวทั้งหมดกลับไปยัง Controller เพื่อนำไปใช้กับ $config[&#8216;total_rows&#8217;] ซึ่งเป็น Library pagination<br />
เมธอด fetch_product() ทำหน้าที่ดึงข้อมูลทั้งหมดจากตาราง products โดยมี arguments รับค่า 2 ค่าเข้าไปซึ่งเป็น $limit และ $start ถูกส่งโดย controller อีกที</p>
<h2>Controller</h2>
<p>เริ่มเขียน Controller ให้สร้างไฟล์ <strong>Product.php</strong> ไว้ใน <span style="color: #ff00ff;">[ชื่อโปรเจค]\Application\controllers\Product.php</span> ตามรูปภาพด้านล่าง<br />
<img decoding="async" class="alignnone size-full wp-image-2564" src="https://www.itoffside.com/wp-content/uploads/2016/02/pagination-02.jpg" alt="pagination-02" width="259" height="382" srcset="https://www.itoffside.com/wp-content/uploads/2016/02/pagination-02.jpg 259w, https://www.itoffside.com/wp-content/uploads/2016/02/pagination-02-203x300.jpg 203w" sizes="(max-width: 259px) 100vw, 259px" /><br />
สร้างไฟล์เสร็จแล้ว ให้นำ code ด้านล่างไปใส่</p><pre class="crayon-plain-tag">&lt;?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Product extends CI_Controller{
  public function __construct(){
    parent::__construct();
    $this-&gt;load-&gt;model("Product_model");
    $this-&gt;load-&gt;library("pagination");
  }
  public function index(){
    $config = array();
        $config["base_url"] = base_url() . "product/index";
        $config["total_rows"] = $this-&gt;Product_model-&gt;record_count();
        $config["per_page"] = 10;
        $config["uri_segment"] = 3;

        $this-&gt;pagination-&gt;initialize($config);

        $page = ($this-&gt;uri-&gt;segment(3)) ? $this-&gt;uri-&gt;segment(3) : 0;
        $data["results"] = $this-&gt;Product_model-&gt;
            fetch_product($config["per_page"], $page);
        $data["links"] = $this-&gt;pagination-&gt;create_links();

        $this-&gt;load-&gt;view("product", $data);
  }
}</pre><p>เริ่มต้น code ในส่วนของ construct() ผมให้ทำการโหลด model ที่ทำการเขียนขึ้นมาเมื่อสักครู่กับโหลด <strong>library pagination</strong> ขึ้นมาใช้งาน (สามารถตั้งเป็น auto load ได้แต่ต้องไปตั้งค่าที่ config แทน)<br />
เมธอด index() ในส่วน code ทำการตั้งค่าในตัวแปร $config โดยนำข้อมูลจาก code model บางส่วน<br />
$config[&#8220;total_rows&#8221;] หมายถึง จำนวนข้อมูลทั้งหมด<br />
$config[&#8220;per_page&#8221;] หมายถึงจำนวนข้อมูลแถวต่อ 1 หน้าที่ให้แสดงผล<br />
$config[&#8220;uri_segment&#8221;] หมายถึง ตั้งค่าให้ตัวเลขหน้าอยู่ตำแหน่งพารามิเตอร์ไหนของ URL</p>
<p>และสุดท้ายหลังจากนั้นให้เราใช้งานเมธอด <strong>create_links()</strong> ใน View ซึ่งคำสั่งนี้จะทำการแสดงผล <span style="text-decoration: underline;">pagination</span></p>
<h2>View</h2>
<p>สำหรับ view ให้เราทำการสร้างไฟล์ <strong>product.php</strong> ไว้ใน <span style="color: #ff00ff;">[ชื่อโปรเจค]\Application\views\product.php</span> ตามรูปภาพด้านล่าง<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2565" src="https://www.itoffside.com/wp-content/uploads/2016/02/pagination-03.jpg" alt="pagination-03" width="260" height="350" srcset="https://www.itoffside.com/wp-content/uploads/2016/02/pagination-03.jpg 260w, https://www.itoffside.com/wp-content/uploads/2016/02/pagination-03-223x300.jpg 223w" sizes="auto, (max-width: 260px) 100vw, 260px" /><br />
สร้างไฟล์แล้วให้นำ code ด้านล่างใส่</p><pre class="crayon-plain-tag">&lt;!DOCTYPE html&gt;
&lt;html&gt;
    &lt;head&gt;
        &lt;meta charset="UTF-8"&gt;
        &lt;title&gt;itOffside.com CodeIgniter Pagination&lt;/title&gt;
        &lt;style type="text/css"&gt;

a {
	color: #003399;
	background-color: transparent;
	font-weight: normal;
  margin: 3px;
  border: 1px solid #000000;
  padding: 2px;
}

h1 {
	color: #444;
	background-color: transparent;
	border-bottom: 1px solid #D0D0D0;
	font-size: 19px;
	font-weight: normal;
	margin: 0 0 14px 0;
	padding: 14px 15px 10px 15px;
}

#container {
	margin: 10px;
	border: 1px solid #D0D0D0;
	box-shadow: 0 0 8px #D0D0D0;
  padding: 5px;
}

p {
	margin: 12px 15px 12px 15px;
}
&lt;/style&gt;
    &lt;/head&gt;
    &lt;body style="margin-top: 10px;"&gt;
      &lt;div id="container"&gt;
        &lt;h1&gt;Product&lt;/h1&gt;
        &lt;div id="body"&gt;
      &lt;?php
      foreach($results as $data) {
          echo "{" . $data-&gt;id . "}" . $data-&gt;name . " - " . $data-&gt;price . "&lt;br&gt;";
      }
      ?&gt;
         &lt;p&gt;&lt;?php echo $links; ?&gt;&lt;/p&gt;
        &lt;/div&gt;
        &lt;p class="footer"&gt;Page rendered in &lt;strong&gt;{elapsed_time}&lt;/strong&gt; seconds&lt;/p&gt;
       &lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre><p></p>
<h2>Result</h2>
<p>ดูผลลัพธ์ เมื่อเข้ามาที่ลิงค์ http:\\localhost\pagination\product\index<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2566" src="https://www.itoffside.com/wp-content/uploads/2016/02/pagination-04.jpg" alt="pagination-04" width="798" height="670" srcset="https://www.itoffside.com/wp-content/uploads/2016/02/pagination-04.jpg 798w, https://www.itoffside.com/wp-content/uploads/2016/02/pagination-04-300x252.jpg 300w, https://www.itoffside.com/wp-content/uploads/2016/02/pagination-04-768x645.jpg 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></p>
<h2>สรุป</h2>
<p>บทความนี้ทำให้เราสามารถทำการแบ่งหน้าได้โดยใช้ Library ของ Codeigniter แบบพื้นฐาน ซึ่งถ้าเราต้องการตั้งค่ามากกว่านี้ เช่น ต้องการกำหนด class css /tag html / ซ่อนลิงค์กรณีที่ข้อมูลมีหน้าเดียว เป็นต้น ให้เราเข้าไปอ่านได้ที่ Document ของเว็บหลักได้ <a href="http://www.codeigniter.com/user_guide/libraries/pagination.html" target="_blank">Pagination Codeigniter</a></p>
<p>สำหรับบทความนี้หากมีใครสงสัยหรือติดปัญหา comment ไว้ด้านล่างครับ.</p><p>The post <a href="https://www.itoffside.com/pagination-codeigniter-php-mysql/">Pagination แบ่งหน้าการแสดงผลด้วย Codeigniter (PHP Mysql)</a> first appeared on <a href="https://www.itoffside.com">การเขียนโปรแกรม, เทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/pagination-codeigniter-php-mysql/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PHP MySQL Pagination แบ่งหน้าการแสดงผลด้วย PHP Mysqli กรณีที่มีจำนวนแถวข้อมูลมาก</title>
		<link>https://www.itoffside.com/php-pagination-example-using-mysqli-database/</link>
					<comments>https://www.itoffside.com/php-pagination-example-using-mysqli-database/#comments</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Thu, 23 Jul 2015 16:07:42 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQLi]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2496</guid>

					<description><![CDATA[<p>ในการทำเว็บไซต์หากคุณมีจำนวนข้อมูล(แถว) มากๆ จนเลื่อนลงไม่รู้จะจบเมื่อไหร หรือ ข้อมูลมากจนทำให้หน้าเว็บคุณยาวขึ้น ผมเสนอแนะวิธีการใช้งาน Pagination หรือการแบ่งหน้า เช่นกรณีมีข้อมูล 100 แถว ให้แบ่งหน้าเหลือเพียง 10 แถวต่อ 1 หน้า ทำให้เว็บคุณไม่ยาว และง่ายในการใช้งานอีกด้วย ซึ่งในบทความนี้ ผมจะแนะนำการเขียนโปรแกรม การแบ่งหน้าแบบง่ายและนำไปใช้งานได้จริงด้วย PHP และ MySQLi Demo : Pagination with php and mysqli เริ่มต้นให้คุณสร้างฐานข้อมูลชื่อ pagination แล้ว Run query เพื่อเพิ่มตารางในฐานข้อมูล MySQL กันก่อนครับโดย...</p>
<p>The post <a href="https://www.itoffside.com/php-pagination-example-using-mysqli-database/">PHP MySQL Pagination แบ่งหน้าการแสดงผลด้วย PHP Mysqli กรณีที่มีจำนวนแถวข้อมูลมาก</a> first appeared on <a href="https://www.itoffside.com">การเขียนโปรแกรม, เทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>ในการทำเว็บไซต์หากคุณมีจำนวนข้อมูล(แถว) มากๆ จนเลื่อนลงไม่รู้จะจบเมื่อไหร หรือ ข้อมูลมากจนทำให้หน้าเว็บคุณยาวขึ้น ผมเสนอแนะวิธีการใช้งาน <span style="color: #0000ff;"><strong>Pagination</strong> </span>หรือการแบ่งหน้า เช่นกรณีมีข้อมูล 100 แถว ให้แบ่งหน้าเหลือเพียง 10 แถวต่อ 1 หน้า ทำให้เว็บคุณไม่ยาว และง่ายในการใช้งานอีกด้วย ซึ่งในบทความนี้ ผมจะแนะนำการเขียนโปรแกรม การแบ่งหน้าแบบง่ายและนำไปใช้งานได้จริงด้วย <strong>PHP</strong> และ <strong>MySQLi</strong><span id="more-2496"></span></p>
<p>Demo : <a href="http://sysapp.itoffside.com/pagination/index.php" target="_blank">Pagination with php and mysqli</a></p>
<p>เริ่มต้นให้คุณสร้างฐานข้อมูลชื่อ pagination แล้ว Run <strong>query</strong> เพื่อเพิ่มตารางในฐานข้อมูล <strong>MySQL</strong> กันก่อนครับโดย copy code  sql ด้านล่างไปวางใน <strong>phpmyadmin</strong> ครับ</p><pre class="crayon-plain-tag">-- phpMyAdmin SQL Dump
-- version 4.3.11
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Jul 23, 2015 at 04:46 PM
-- Server version: 5.6.24
-- PHP Version: 5.6.8

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `pagination`
--

-- --------------------------------------------------------

--
-- Table structure for table `products`
--

CREATE TABLE IF NOT EXISTS `products` (
  `id` int(11) NOT NULL,
  `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `price` decimal(8,2) NOT NULL,
  `status` tinyint(1) NOT NULL DEFAULT '1'
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Dumping data for table `products`
--

INSERT INTO `products` (`id`, `name`, `price`, `status`) VALUES
(1, 'iPhone 6 Plus', '25000.00', 1),
(2, 'iPhone 6', '22000.00', 1),
(3, 'True SMART 4.0', '5000.00', 1),
(4, 'Samsung Galaxy ALPHA', '12000.00', 1),
(5, 'Samsung Galaxy Note', '23000.00', 1),
(6, 'iPhone 5S', '20000.00', 1),
(7, 'Samsung Galaxy S5', '20000.00', 1),
(8, 'Galaxy K Zoom 3G', '21000.00', 1),
(9, 'OPPO Joy Plus', '4500.00', 1),
(10, 'Galaxy S DUOS 2', '3900.00', 1),
(11, 'OPPO Joy Plus', '3490.00', 1),
(12, 'Huawei Alek 4G', '5460.00', 1),
(13, 'Huawei P8 Lite', '7900.00', 1),
(14, 'OPPO N1 Mini', '9900.00', 1),
(15, 'Samsung Galaxy E7', '11500.00', 1),
(16, 'LG G4', '22900.00', 1),
(17, 'i-Mobile IQ X Lucus', '5900.00', 1),
(18, 'i-mobile I-Style 8.3', '4990.00', 1),
(19, 'I-Mobile I-Style 210', '2490.00', 1),
(20, 'i-mobile IQ 5.7', '4490.00', 1),
(21, 'Galaxy Win 4.7', '7900.00', 1),
(22, 'Galaxy Note 3 LTE', '19900.00', 1),
(23, 'Nokia Lumia 630', '4990.00', 1);

--
-- Indexes for dumped tables
--

--
-- Indexes for table `products`
--
ALTER TABLE `products`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `products`
--
ALTER TABLE `products`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=24;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;</pre><p>ดูรูปภาพประกอบด้านล่าง<br />
<img loading="lazy" decoding="async" class="alignnone wp-image-2504 size-full" src="https://www.itoffside.com/wp-content/uploads/2015/07/pagination-01.jpg" alt="pagination-01" width="769" height="475" srcset="https://www.itoffside.com/wp-content/uploads/2015/07/pagination-01.jpg 769w, https://www.itoffside.com/wp-content/uploads/2015/07/pagination-01-300x185.jpg 300w" sizes="auto, (max-width: 769px) 100vw, 769px" /></p>
<p>ทำการสร้างไฟล์ index.php เป็นไฟล์ในการแสดงผล โดยในตัวอย่างผมต้องการแบ่งหน้า หน้าละ 5 แถว (record) สมมุติว่ามี จำนวนข้อมูล 57 แถว ดังนั้นจะมีทั้งหมด 12 หน้าวิธีคำนวณการแบ่งหน้าในตัวอย่างนี้ผมใช้หลักการดังต่อไปนี้<br />
&#8211; กรณีมีหน้าทั้งหมด 57 แถวและเราจะทำการแบ่งหน้า หน้าละ 5 แถว ให้นำ จำนวนแบ่งหน้าไปหาร จำนวนทั้งหมดโดยถ้ามีเศษให้ปัดขึ้น ได้เป็น 57/5 = 11.4 ปัดขึ้นเป็น 12<br />
เมื่อเราสร้างไฟล์เสร็จแล้วให้ copy code ด้านล่างไปวางไว้ในไฟล์ index.php</p><pre class="crayon-plain-tag">&lt;!DOCTYPE html&gt;
&lt;html&gt;
 &lt;head&gt;
 &lt;meta charset="UTF-8"&gt;
 &lt;title&gt;itOffside.com Pagination&lt;/title&gt;
 &lt;link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"&gt;
 &lt;link rel="stylesheet" href="bootstrap/css/bootstrap-theme.min.css"&gt;

 &lt;/head&gt;
 &lt;body style="margin-top: 10px;"&gt;
 &lt;?php
 $con = mysqli_connect('localhost', 'root', '', 'pagination');
 $perpage = 5;
 if (isset($_GET['page'])) {
 $page = $_GET['page'];
 } else {
 $page = 1;
 }

 $start = ($page - 1) * $perpage;

 $sql = "select * from products limit {$start} , {$perpage} ";
 $query = mysqli_query($con, $sql);
 ?&gt;
 &lt;div class="container"&gt;
 &lt;div class="row"&gt;
 &lt;div class="col-lg-12"&gt;
 &lt;table class="table table-bordered table-hover"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;#&lt;/th&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Price&lt;/th&gt;
 &lt;/tr&gt; 
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;?php while ($result = mysqli_fetch_assoc($query)) { ?&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;?php echo $result['id']; ?&gt;&lt;/td&gt;
 &lt;td&gt;&lt;?php echo $result['name']; ?&gt;&lt;/td&gt;
 &lt;td&gt;&lt;?php echo $result['price']; ?&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;?php } ?&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;?php
 $sql2 = "select * from products ";
 $query2 = mysqli_query($con, $sql2);
 $total_record = mysqli_num_rows($query2);
 $total_page = ceil($total_record / $perpage);
 ?&gt;

 &lt;nav&gt;
 &lt;ul class="pagination"&gt;
 &lt;li&gt;
 &lt;a href="index.php?page=1" aria-label="Previous"&gt;
 &lt;span aria-hidden="true"&gt;&amp;laquo;&lt;/span&gt;
 &lt;/a&gt;
 &lt;/li&gt;
 &lt;?php for($i=1;$i&lt;=$total_page;$i++){ ?&gt;
 &lt;li&gt;&lt;a href="index.php?page=&lt;?php echo $i; ?&gt;"&gt;&lt;?php echo $i; ?&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;?php } ?&gt;
 &lt;li&gt;
 &lt;a href="index.php?page=&lt;?php echo $total_page;?&gt;" aria-label="Next"&gt;
 &lt;span aria-hidden="true"&gt;&amp;raquo;&lt;/span&gt;
 &lt;/a&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;/nav&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt; &lt;!-- /container --&gt;
 &lt;script src="bootstrap/js/bootstrap.min.js"&gt;&lt;/script&gt;
 &lt;/body&gt;
&lt;/html&gt;</pre><p><strong>เริ่มต้นการอธิบาย code</strong><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2505" src="https://www.itoffside.com/wp-content/uploads/2015/07/pagination-02.jpg" alt="pagination-02" width="649" height="248" srcset="https://www.itoffside.com/wp-content/uploads/2015/07/pagination-02.jpg 649w, https://www.itoffside.com/wp-content/uploads/2015/07/pagination-02-300x115.jpg 300w" sizes="auto, (max-width: 649px) 100vw, 649px" /><br />
การอธิบายcode จะอ้างอิงจากรูปภาพด้านบนครับ<br />
<span style="color: #ff00ff;">บรรทัดที่ 12 (ไฮต์ไลท์สีเหลือง)</span> &#8211; เชื่อมต่อฐานข้อมูล pagination<br />
<span style="color: #ff00ff;">บรรทัดที่ 13:18 (กรอบสีแดง หมายเลข 1)</span>  &#8211; กำหนดตัวแปร จำนวนแถวข้อมูลต่อหน้าคือ 5 และเช็คว่าหากมีค่าตัวแปร GET[&#8216;page&#8217;] ให้เท่ากับตัวแปร GET ไม่มีให้เท่ากับ 1 โดยค่านี้เป็นค่าตัวแปรที่กำหนดว่า เราอยู่หน้าที่เท่าไหร<br />
<span style="color: #ff00ff;">บรรทัดที่ 20 (กรอบสีแดง หมายเลข 2)</span> &#8211; ค่าตัวแปร $start เป็นการกำหนดจุดเริ่มต้นในการค้นหา(select) ข้อมูล โดยเริ่มต้นตำแหน่งแถวที่ 0 เช่น มีทั้งหมด 5 แถว จะนับได้ดังนี้ 0,1,2,3,4 เป็นต้น ดังนั้นตัวแปร start จะคำนวณจาก หน้าที่เราอยู่(หน้าที่เท่าไหร) &#8211; 1 * จำนวนแถวข้อมูลต่อหน้า ผมสมมุติว่า ผมอยู่หน้า ที่ 3 แถวข้อมูล แบ่งหน้าละ 5 ดังนั้น จะคำนวณได้ดังนี้ (3-1) * 5 = 10 ฉะนั้นแล้ว ตัวแปร start จะเริ่มที่ 10 ครับ<br />
<span style="color: #ff00ff;">บรรทัดที่ 22:24 (กรอบสีแดง หมายเลข 3)</span> &#8211; เป็นคำสั่งในการค้นหาข้อมูลเฉพาะหน้าที่เราคลิกนั้นเอง สังเกตุได้จากคำสั่ง litmit $start, $perpage หมายถึง เลือกข้อมูลโดยเริ่มที่ $start ถึง $perpage โดยในตัวอย่างนี้อยู่หน้า 3 ดังนั้นจะมีข้อมูลตำแหน่งแถวที่ 10,11,12,13,14</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2506" src="https://www.itoffside.com/wp-content/uploads/2015/07/pagination-03.jpg" alt="pagination-03" width="748" height="308" srcset="https://www.itoffside.com/wp-content/uploads/2015/07/pagination-03.jpg 748w, https://www.itoffside.com/wp-content/uploads/2015/07/pagination-03-300x124.jpg 300w" sizes="auto, (max-width: 748px) 100vw, 748px" /><br />
การอธิบายcode จะอ้างอิงจากรูปภาพด้านบนครับ<br />
<span style="color: #ff00ff;">บรรทัดที่ 37:43 ในกรอบสีแดงหมายเลข 1</span> &#8211; เป็นการนำข้อมูลมาแสดงผลครับ โดยใช้ query จากคำสั่ง select * from products limit {$start} , {$perpage}<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2507" src="https://www.itoffside.com/wp-content/uploads/2015/07/pagination-04.jpg" alt="pagination-04" width="913" height="412" srcset="https://www.itoffside.com/wp-content/uploads/2015/07/pagination-04.jpg 913w, https://www.itoffside.com/wp-content/uploads/2015/07/pagination-04-300x135.jpg 300w" sizes="auto, (max-width: 913px) 100vw, 913px" /><br />
การอธิบายcode จะอ้างอิงจากรูปภาพด้านบนครับ<br />
<span style="color: #ff00ff;">บรรทัดที่ 46:51 (กรอบสีแดง หมายเลข 1)</span>  &#8211; เป็นการ select ข้อมูลทั้งหมดเพื่อ ให้ตัวแปร $total_page เก็บค่าจำนวนหน้า โดยใช้หลักการ หารปัดเศษโดย เอาจำนวนแถวข้อมูลทั้งหมดหารจำนวนหน้า จากตัวอย่างบทความนี้ จะได้เป็น 23/5 ปัดหารเศษจะได้จำนวนหน้าทั้งหมดคือ 5 หน้าครับ<br />
<span style="color: #ff00ff;">บรรทัดที่ 55:59 (กรอบสีแดง หมายเลข 2)</span>  &#8211; เป็นปุ่มกด ย้อนกลับไปหน้าแรก โดยใส่ลิงค์ page=1 (ให้ค่าตัวแปร $_GET[&#8216;page&#8217;] เก็บหมายเลขหน้าที่เราคลิกปัจจุบัน<br />
<span style="color: #ff00ff;">บรรทัดที่ 60:62 (กรอบสีแดง หมายเลข 3)</span>  &#8211; ใช้ code for ในการทำปุ่มซ้ำๆ โดย for ตาม $total_page หรือจำนวนหน้าที่เรามีอยู่(ในตัวอย่างมี 5 หน้า) ดังนั้นจะทำการสร้างปุ่มทั้งหมด 5 ปุ่มครับ<br />
<span style="color: #ff00ff;">บรรทัดที่ 63:67 (กรอบสีแดง หมายเลข 4)</span>  &#8211; เป็นปุ่มกด หน้าสุดท้าย โดยใส่ลิงค์ page=$total_page เหมือนปุ่ม กดย้อนกลับไปหน้าแรก ครับ</p>
<p>หลังจากเราทำเสร็จแล้วดูผลทดสอบครับ</p>
<p>Demo : <a href="http://sysapp.itoffside.com/pagination/index.php" target="_blank">Pagination with php and mysqli</a><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2508" src="https://www.itoffside.com/wp-content/uploads/2015/07/pagination-05.jpg" alt="pagination-05" width="771" height="441" srcset="https://www.itoffside.com/wp-content/uploads/2015/07/pagination-05.jpg 771w, https://www.itoffside.com/wp-content/uploads/2015/07/pagination-05-300x172.jpg 300w" sizes="auto, (max-width: 771px) 100vw, 771px" /></p>
<p>สำหรับบทความแบ่งหน้าหรือ pagination ผมคิดว่าน่าจะมีการใช้งานบ่อยๆ ดังนั้นอาจจะมีประโยชน์กับเพื่อนๆโปรแกรมเมอร์ หากใครมีไอเดียในการพัฒนาจากที่ผมเขียนสามารถเสนอแนะ แนะนำผมได้ผ่าน Comment ด้านล่างได้ครับ</p><p>The post <a href="https://www.itoffside.com/php-pagination-example-using-mysqli-database/">PHP MySQL Pagination แบ่งหน้าการแสดงผลด้วย PHP Mysqli กรณีที่มีจำนวนแถวข้อมูลมาก</a> first appeared on <a href="https://www.itoffside.com">การเขียนโปรแกรม, เทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/php-pagination-example-using-mysqli-database/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
	</channel>
</rss>
