<?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>DataTables - itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</title>
	<atom:link href="https://www.itoffside.com/tag/datatables/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.itoffside.com</link>
	<description>ข้อมูลข่าวสารและเรื่องราวบนโลกของไอทีที่ ล้ำหน้า พร้อมสาระการเขียนโปรแกรมคอมพิวเตอร์</description>
	<lastBuildDate>Sun, 09 Jun 2024 05:24:35 +0000</lastBuildDate>
	<language>th</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>

<image>
	<url>https://www.itoffside.com/wp-content/uploads/2020/04/cropped-favicon-96x96-1-32x32.png</url>
	<title>DataTables - itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</title>
	<link>https://www.itoffside.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Source code ระบบ การขาย, พิมพ์ใบกำกับภาษี/ใบเสร็จรับเงิน</title>
		<link>https://www.itoffside.com/source-code-e-invoice-print/</link>
					<comments>https://www.itoffside.com/source-code-e-invoice-print/#comments</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Wed, 24 Apr 2019 04:00:08 +0000</pubDate>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[DataTables]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php7]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=3080</guid>

					<description><![CDATA[<p>eInvoice คือ ระบบการขาย, พิมพ์ใบกำกับภาษี/ใบเสร็จรับเงิน(Invoice) เป็นระบบที่ช่วยให้การออกหลักฐานของการเสียภาษีมูลค่าเพิ่ม ออกให้กับลูกค้าทุกครั้งที่มีการเข้ามาซื้อสินค้า/บริการ จากเรา ซึ่งผมได้ทำออกมา เพื่อให้บุคคลที่สนใจสามารถนำไปเป็นตัวอย่าง Sourcecode หรือนำไปใช้งานได้ ระบบนี้จะพัฒนาต่อไปเรื่อยๆ...</p>
<p>The post <a href="https://www.itoffside.com/source-code-e-invoice-print/">Source code ระบบ การขาย, พิมพ์ใบกำกับภาษี/ใบเสร็จรับเงิน</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>eInvoice</strong> คือ ระบบ<strong>การขาย</strong>, <strong>พิมพ์ใบกำกับภาษี</strong>/ใบเสร็จรับเงิน(<strong>Invoice</strong>) เป็นระบบที่ช่วยให้การออกหลักฐานของการเสียภาษีมูลค่าเพิ่ม ออกให้กับลูกค้าทุกครั้งที่มีการเข้ามาซื้อสินค้า/บริการ จากเรา ซึ่งผมได้ทำออกมา เพื่อให้บุคคลที่สนใจสามารถนำไปเป็นตัวอย่าง <strong>Sourcecode</strong> หรือนำไปใช้งานได้ ระบบนี้จะพัฒนาต่อไปเรื่อยๆ นะครับไม่มีหยุด<span id="more-3080"></span></p>
<p><strong>ความสามารถของระบบ<br />
</strong></p>
<ul>
<li>ทำงานบน Window, Linux, OSX</li>
<li>หน้าจอใช้งานง่าย สวยงาม</li>
<li>สามารถจัดการข้อมูลลูกค้าได้</li>
<li>สามารถจัดการข้อมูลสินค้าได้</li>
<li>สามารถสร้างการขายและพิมพ์ใบกำกับภาษีได้</li>
<li>มีระบบป้องกันการเข้าถึงข้อมูล</li>
<li>มีระบบการค้นหาข้อมูลการขาย</li>
<li>ระบบจัดการร้านค้า</li>
</ul>
<p><strong>เทคโนโลยีในการพัฒนาระบบ</strong></p>
<ul>
<li>PHP 7, PHP 8</li>
<li>MariaDB</li>
<li>Codeigniter 3.1.13</li>
<li>Bootstrap 4</li>
<li>Vuejs 2</li>
<li>jQuery 3</li>
<li>VSCode</li>
</ul>
<p><strong>รูปภาพหน้าจอ</strong></p>
 [<a href="https://www.itoffside.com/source-code-e-invoice-print/">See image gallery at www.itoffside.com</a>] 
<p><strong>*สนับสนุนโปรแกรม eInvoice*</strong><br />
<span style="color: #ff9900;"><strong>350 บาท</strong></span><span class="text_exposed_show"><br />
ธนาคารไทยพาณิชย์<br />
เลขบัญชี 351-253589-0</span></p>
<p><strong>ดาวน์โหลด<br />
</strong>inbox เพจ&nbsp;<a href="https://www.facebook.com/itoffside" target="_blank" rel="noopener">https://www.facebook.com/itoffside</a><br />
หรือ ติดต่อที่ไลน์ไอดี @eke8377p (มี @ ข้างหน้าด้วย)</p>
<p><strong>LINE ID:</strong></p>
<p><img decoding="async" class="" src="https://qr-official.line.me/L/GjDKhMhfT9.png" width="223" height="223"></p><p>The post <a href="https://www.itoffside.com/source-code-e-invoice-print/">Source code ระบบ การขาย, พิมพ์ใบกำกับภาษี/ใบเสร็จรับเงิน</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/source-code-e-invoice-print/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>ใช้ Datatables กับ Codeigniter แบบ Server-Side (Ajax)</title>
		<link>https://www.itoffside.com/use-datatables-with-codeigniter-server-side-ajax/</link>
					<comments>https://www.itoffside.com/use-datatables-with-codeigniter-server-side-ajax/#comments</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Sat, 06 Jan 2018 18:26:12 +0000</pubDate>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[DataTables]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQLi]]></category>
		<category><![CDATA[PHP Framework]]></category>
		<category><![CDATA[php workshop]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2784</guid>

					<description><![CDATA[<p>สวัสดีครับคุณผู้อ่านทุกท่าน เมื่อคราวที่แล้ว ผมได้มีการลงบทความ การใช้งาน Datatables แบบบ้านๆ โดยใช้ PHP ธรรมดาในการ ทำงาน ซึ่งทางผมเองคาดว่าผู้อ่าน จะได้รับประโยนช์จากบทความ ไม่มากก็น้อยครับ ดังนั้นในบทความนี้ ผมก็เลยมาสอนการใช้ Datatables กับ Codeigniter ว่าต้องทำอย่างไรบ้าง เริ่มจากตรงไหนบ้าง ซึ่...</p>
<p>The post <a href="https://www.itoffside.com/use-datatables-with-codeigniter-server-side-ajax/">ใช้ Datatables กับ Codeigniter แบบ Server-Side (Ajax)</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><em>สวัสดีครับคุณผู้อ่านทุกท่าน</em> เมื่อคราวที่แล้ว ผมได้มีการลงบทความ การใช้งาน Datatables แบบบ้านๆ โดยใช้ <strong>PHP</strong> ธรรมดาในการ ทำงาน ซึ่งทางผมเองคาดว่าผู้อ่าน จะได้รับประโยนช์จากบทความ ไม่มากก็น้อยครับ</p>
<p>ดังนั้นในบทความนี้ ผมก็เลยมาสอนการใช้ <strong>Datatables</strong> กับ <strong>Codeigniter</strong> ว่าต้องทำอย่างไรบ้าง เริ่มจากตรงไหนบ้าง ซึ่งบทความนี้เหมาะกับคนที่เคยเขียน Codeigniter และเขียน <strong>javascript</strong> พอได้ ครับ<span id="more-2784"></span></p>
<p><span style="color: #ff00ff;">Demo</span><br />
<a href="http://sysapp.itoffside.com/datatables_ci/" target="_blank" rel="noopener">http://sysapp.itoffside.com/datatables_ci/</a></p>
<p><span style="color: #ff00ff;">Download</span><br />
<a href="https://github.com/ipball/datatables_ci/archive/master.zip" target="_blank" rel="noopener">https://github.com/ipball/datatables_ci/archive/master.zip<br />
</a></p>
<p><span style="color: #ff00ff;">Clone git</span><br />
<a href="https://github.com/ipball/datatables_ci.git" target="_blank" rel="noopener">https://github.com/ipball/datatables_ci.git</a></p>
<p><span style="color: #000080;"><strong>สิ่งที่ต้องเตรียม</strong></span><br />
1. ไฟล์ <a href="https://datatables.net/download" target="_blank" rel="noopener">plugins Datatables</a><br />
2. ไฟล์ <a href="https://jquery.com/download/" target="_blank" rel="noopener">jQuery</a><br />
3. <a href="http://getbootstrap.com/docs/3.3/" target="_blank" rel="noopener">Bootstrap framework</a><br />
4. <a href="https://www.codeigniter.com/" target="_blank" rel="noopener">Codeiniter framework</a><br />
5. <a href="https://raw.githubusercontent.com/ipball/datatables_ci/master/datatables.sql" target="_blank" rel="noopener">ฐานข้อมูล</a></p>
<p><em>เริ่มต้นกันเลยครับ</em></p>
<p>สร้างฐานข้อมูลชื่อ datatables แล้ว import ไฟล์ sql (ในข้อ 5)<br />
กำหนด application/config/config.php<br />
<img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-2810" src="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-10.jpg" alt="datatables-with-codeigniter-10" width="560" height="94" srcset="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-10.jpg 560w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-10-300x50.jpg 300w" sizes="(max-width: 560px) 100vw, 560px" /></p>
<p>กำหนด application/config/database.php ให้ตรงตามค่าเซฟเวอร์<br />
<img decoding="async" class="alignnone size-full wp-image-2811" src="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-09.jpg" alt="datatables-with-codeigniter-09" width="481" height="422" srcset="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-09.jpg 481w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-09-300x263.jpg 300w" sizes="(max-width: 481px) 100vw, 481px" /></p>
<p>ให้เราสร้างไฟล์ <strong>index.php</strong> ไว้ในไฟล์ <span style="color: #000080;">Application/view/</span><br />
จะได้เป็น <span style="color: #000080;">Application/view/index.php</span></p>
<p><em>ต่อมาให้เรา</em>ทำการ Include ไฟล์ jquery, bootstrap, dataTables ไว้ &lt;body&gt; นะครับ จากตัวอย่างไว้ ล่างสุดของ body<br />
โดยไฟล์ที่เพิ่มจะมีด้วยกัน 4 ไฟล์นะครับ ซึ่งมี jquery, bootstrap, datatables(2 ไฟล์)<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2798" src="https://www.itoffside.com/wp-content/uploads/2017/12/datatables-with-codeigniter-01.jpg" alt="datatables-with-codeigniter-01" width="963" height="278" srcset="https://www.itoffside.com/wp-content/uploads/2017/12/datatables-with-codeigniter-01.jpg 963w, https://www.itoffside.com/wp-content/uploads/2017/12/datatables-with-codeigniter-01-300x87.jpg 300w, https://www.itoffside.com/wp-content/uploads/2017/12/datatables-with-codeigniter-01-768x222.jpg 768w" sizes="auto, (max-width: 963px) 100vw, 963px" /></p>
<p>จากนั้น เพิ่ม css ไฟล์ไว้ใน &lt;header&gt; ตามรูปภาพด้านล่าง<br />
โดยมีด้วยกัน 2 ไฟล์คือ ไฟล์ bootstrap, datatables สำหรับ bootstrap<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2799" src="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-02.jpg" alt="datatables-with-codeigniter-02" width="941" height="192" srcset="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-02.jpg 941w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-02-300x61.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-02-768x157.jpg 768w" sizes="auto, (max-width: 941px) 100vw, 941px" /></p>
<p>เมื่อเรา include ไฟล์ js, css มาครบแล้วที่นี้เราก็พร้อมที่จะใช้งานแล้วครับ แต่เราต้องสร้างตาราง ไว้ใน &lt;body&gt; กันก่อน สร้างตารางตามรูปภาพด้านล่างนี้เลยนะครับ<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2800" src="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-03.jpg" alt="datatables-with-codeigniter-03" width="744" height="362" srcset="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-03.jpg 744w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-03-300x146.jpg 300w" sizes="auto, (max-width: 744px) 100vw, 744px" /></p>
<p>จากนี้จะเป็นการเรียกใช้งาน datatables โดยใช้ jQuery นะครับ โดยผมจะนำโค้ดไว้ล่างสุด ก่อน &lt;/body&gt; ลองดูตัวอย่างโค้ดครับ</p><pre class="crayon-plain-tag">&lt;script type="text/javascript"&gt;
    $(document).ready(function () {
      var table = $('#table_id').DataTable({
        pageLength: 10,
        serverSide: true,
        processing: true,
        ajax: {
          url:'&lt;?php echo site_url('customer/find_with_page'); ?&gt;'
        },
        'columns':[
        {
          data:'name',
          render: function(data, type, row){
            return '&lt;a href="&lt;?php echo site_url('customer/edit/'); ?&gt;'+row['id']+'"&gt;'+data+'&lt;/a&gt; ';
          }
        },
        {
          data:'phone'
        },
        {
          data:'fax'
        },
        {
          data:'state',
          render: function (data,type,row){
            var active = '&lt;span class="label label-success"&gt;ใช้งาน&lt;/span&gt;';
            var inactive = '&lt;span class="label label-danger"&gt;ยกเลิก&lt;/span&gt;';
            var status = (data==true) ? active : inactive;
            return status;
          }
        },
        {
          data:'id',
          render:function(data,type,row){
            var dataName = row['name'];
            var btnDelete = '&lt;a href="#" data-href="&lt;?php echo site_url('customer/delete'); ?&gt;" data-id="'+data+'" data-name="'+dataName+'" role="button" class="btn btn-danger btn-xs"&gt;&lt;i class="glyphicon glyphicon-trash"&gt;&lt;/i&gt; ลบ&lt;/a&gt;';
            return btnDelete;
          },
          orderable: false
        }
        ]
      });
    })
  &lt;/script&gt;</pre><p>ภาพตัวอย่าง<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2801" src="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-04.jpg" alt="datatables-with-codeigniter-04" width="921" height="636" srcset="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-04.jpg 921w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-04-300x207.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-04-768x530.jpg 768w" sizes="auto, (max-width: 921px) 100vw, 921px" /></p>
<p><strong><span style="color: #000080;">อธิบายโค้ดคำสั่ง</span></strong><br />
โดยสังเกตุ นะครับ ว่าโค้ด jQueryส่วนของ var table = <strong><em>$(&#8216;#table_id&#8217;)</em></strong> จะต้องตรงกับ &lt;table id=&#8221;<em><strong>table_id</strong></em>&#8220;&gt; เพื่อใช้ในการอ้างอิงการทำงาน<br />
&#8211; <span style="color: #000080;">pageLength</span> หมายถึงจำนวนต่อหน้าที่แสดงผล<br />
&#8211; <span style="color: #000080;">serverSide</span> หมายถึง เปิดใช้งานโหมด server-side<br />
&#8211; <span style="color: #000080;">processing</span> หมายถึง เวลามีการเปลี่ยนแปลงข้อมูลให้แสดง label loading ขึ้นมา<br />
&#8211;  <span style="color: #000080;">ajax</span> { url:&#8230;} หมายถึงการเรียกดึงข้อมูลจาก server ในตัวอย่างดึงข้อมูลจาก site_url(&#8216;customer/find_with_page&#8217;) นั้นหมายถึง ว่าเราต้องมี controller ชื่อ Customer และ Method ชื่อ find_with_page เดี่ยวเราจะมาสร้าง Controller กันต่อครับ<br />
&#8211; &#8216;<span style="color: #000080;">columns</span>&#8216;:[] หมายถึง คอลัมน์ใน datatables มีอะไรบ้างเราสามารถกำหนดได้ที่นี้โดยอ้างอิงจากฟิล์ดข้อมูลที่เราดึงมาจาก server ด้วยครับ เช่นเราดึงข้อมูลมีฟิล์ด id, name, age ดังนั้นจะได้ &#8216;columns&#8217;:[data:&#8217;name&#8217;, data:&#8217;age&#8217;] โดยโค้ดนี้จะแสดง คอลัมน์ name, age ครับ กรณีถ้าเราต้องการ style column เราก็ใช้คำสั่ง render เช่น</p><pre class="crayon-plain-tag">'columns':[
        {
          data:'name',
          render: function(data, type, row){
            return '&lt;a href="&lt;?php echo site_url('customer/edit/'); ?&gt;'+row['id']+'"&gt;'+data+'&lt;/a&gt; ';
          }
        },</pre><p>สำหรับ <span style="color: #000080;">view/index.php</span> ก็มีเพียงเท่านี้นะครับ ต่อไปเราจะมาเขียนโค้ดในส่วนของ Controller และ Model กันต่อ</p>
<p>สร้างไฟล์ <strong>Customer.php</strong> ในโฟล์เดอร์<span style="color: #000080;"> application/controllers</span><br />
จะได้เป็น <span style="color: #000080;">application/controllers/Customer.php</span><br />
แล้วให้นำโค้ดนี้ไปวางไว้ใน ไฟล์ครับ</p><pre class="crayon-plain-tag">&lt;?php
defined('BASEPATH') or exit('No direct script access allowed');

class Customer extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this-&gt;load-&gt;model('Customer_model');
    }

    public function index()
    {
        $this-&gt;load-&gt;view('customer/index');
    }

    public function find_with_page()
    {
        $order_index = $this-&gt;input-&gt;get('order[0][column]');
        $param['page_size'] = $this-&gt;input-&gt;get('length');
        $param['start'] = $this-&gt;input-&gt;get('start');
        $param['draw'] = $this-&gt;input-&gt;get('draw');
        $param['keyword'] = trim($this-&gt;input-&gt;get('search[value]'));
        $param['column'] = $this-&gt;input-&gt;get("columns[{$order_index}][data]");
        $param['dir'] = $this-&gt;input-&gt;get('order[0][dir]');

        $results = $this-&gt;Customer_model-&gt;find_with_page($param);

        $data['draw'] = $param['draw'];
        $data['recordsTotal'] = $results['count'];
        $data['recordsFiltered'] = $results['count_condition'];
        $data['data'] = $results['data'];
        $data['error'] = $results['error_message'];

        $this-&gt;output-&gt;set_content_type('application/json')-&gt;set_output(json_encode($data));
    }
}</pre><p><span style="color: #000080;"><strong>อธิบายโค้ด</strong></span><br />
Method <strong>find_with_page</strong><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2803" src="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-05.jpg" alt="datatables-with-codeigniter-05" width="678" height="237" srcset="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-05.jpg 678w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-05-300x105.jpg 300w" sizes="auto, (max-width: 678px) 100vw, 678px" /></p>
<p><em>จากรูปภาพด้านบน</em> ตัวแปรอาเรย์ $param รับค่าจาก datatables มา แล้วเรานำค่านี้ส่งไปยัง model เพื่อ query ข้อมูลตามเงื่อนไขของ datatables เช่น ต้องการแสดงหน้า 2 หรือต้องการ sort ตารางนะครับ</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2805" src="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-06-1.jpg" alt="datatables-with-codeigniter-06" width="854" height="244" srcset="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-06-1.jpg 854w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-06-1-300x86.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-06-1-768x219.jpg 768w" sizes="auto, (max-width: 854px) 100vw, 854px" /></p>
<p><em>จากรูปภาพด้านบน</em> บรรทัดที่ 27 เราใช้ model ในการ get ค่าจากฐานข้อมูลมาแล้วไว้ใน $results แล้ว ก็ส่งตอบกลับไปที่ datatables ในแบบ JSON ครับโดยจำเป็นต้องส่งไปคือข้อมูล<br />
&#8211; <span style="color: #000080;">draw</span><br />
&#8211; <span style="color: #000080;">recordsTotal</span> หมายถึงจำนวนทั้งหมดของข้อมูล<br />
&#8211; <span style="color: #000080;">recordsFiltered</span> หมายถึงจำนวนทั้งหมดของข้อมูลที่ กรองมาแล้ว<br />
&#8211; <span style="color: #000080;">data</span> หมายถึงข้อมูล เช่น name, email, phone<br />
&#8211; <span style="color: #000080;">error</span> หมายถึง error ข้อผิดพลาดจากการเรียกข้อมูล ถ้าไม่มีให้ใส่เป็นค่าว่าง</p>
<p>สำหรับ Controller มีเพียงเท่านี้ครับ แล้วเรามาเขียนส่วนของ Model ว่าทำอย่างไรถึงจะโยนข้อมูลในรูปแบบนี้มาให้ Controller</p>
<p>สำหรับ Model ให้เราสร้างไฟล์ <strong>Customer_model.php</strong> ไว้ในโฟล์เดอร์ <span style="color: #000080;">application/models</span><br />
ได้เป็น <span style="color: #000080;">application/models/Customer_model.php</span><br />
จากนั้นให้เรานำโค้ดนี้ไปใส่ในไฟล์</p><pre class="crayon-plain-tag">&lt;?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Customer_model extends CI_Model {
	public function __construct(){
		parent::__construct();
	}

	public function find_with_page($param){
		$keyword = $param['keyword'];
		$this-&gt;db-&gt;select('*');

		$condition = "1=1";
		if(!empty($keyword)){
			$condition .= " and (name like '%{$keyword}%' or phone like '%{$keyword}%')";
		}

		$this-&gt;db-&gt;where($condition);
		$this-&gt;db-&gt;limit($param['page_size'], $param['start']);
		$this-&gt;db-&gt;order_by($param['column'], $param['dir']);

		$query = $this-&gt;db-&gt;get('customer');
		$data = [];
		if($query-&gt;num_rows() &gt; 0){
			foreach($query-&gt;result() as $row){
				$data[] = $row;
			}
		}

		$count_condition = $this-&gt;db-&gt;from('customer')-&gt;where($condition)-&gt;count_all_results();
		$count = $this-&gt;db-&gt;from('customer')-&gt;count_all_results();
		$result = array('count'=&gt;$count,'count_condition'=&gt;$count_condition,'data'=&gt;$data,'error_message'=&gt;'');
		return $result;
	}
}</pre><p><span style="color: #000080;"><strong>อธิบายโค้ด</strong></span><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2807" src="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-07.jpg" alt="datatables-with-codeigniter-07" width="954" height="504" srcset="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-07.jpg 954w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-07-300x158.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-07-768x406.jpg 768w" sizes="auto, (max-width: 954px) 100vw, 954px" /></p>
<p><em>จากรูปภาพด้านบน</em><br />
<strong>บรรทัด 9 &#8211; 27</strong> เป็นการ get ข้อมูลจากฐานข้อมูลโดยมีเงื่อนไขต่างๆที่รับตัวแปรมาจาก controller ครับ<br />
<strong>บรรทัดที่ 29</strong> คือ จำนวนทั้งหมดของข้อมูลแบบที่กรองข้อมูลมาแล้ว<br />
<strong>บรรทัดที่ 30</strong> คือ จำนวนข้อมูลทั้งหมด<br />
<strong>บรรทัดที่ 31</strong> คือ $result คืนค่าข้อมูลแบบ array มาโดยมี count, count_condition, data ,error_message</p>
<p>เสร็จแล้วครับ ผลลัพท์ได้เป็นดังนี้<br />
<img loading="lazy" decoding="async" class="alignnone size-large wp-image-2808" src="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-08-1024x520.jpg" alt="datatables-with-codeigniter-08" width="660" height="335" srcset="https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-08-1024x520.jpg 1024w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-08-300x152.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-08-768x390.jpg 768w, https://www.itoffside.com/wp-content/uploads/2018/01/datatables-with-codeigniter-08.jpg 1185w" sizes="auto, (max-width: 660px) 100vw, 660px" /></p>
<p>เราสามารถ sort column ได้ ค้นหาชื่อลูกค้าได้ สามารถกำหนด style ใน column ได้ สามารถกำหนดว่าจะแสดงกี่แถวในหนึ่งหน้าได้ ซึ่งผมว่า datatables เหมาะนำไปใช้งานเกือบทุกๆงาน ครับ<br />
จบแล้วครับสำหรับการใช้ <strong>dataTables</strong> กับ <strong>Codeigniter</strong> หากใครมีคำถามข้อสงสัยเพิ่มเติมสามารถเขียนความเห็นด้านล่างไว้เลยนะครับ</p><p>The post <a href="https://www.itoffside.com/use-datatables-with-codeigniter-server-side-ajax/">ใช้ Datatables กับ Codeigniter แบบ Server-Side (Ajax)</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/use-datatables-with-codeigniter-server-side-ajax/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>การติดตั้งใช้งาน Datatables กับการดึงข้อมูลแบบ AJAX Server-side [PHP+MySQL]</title>
		<link>https://www.itoffside.com/howto-datatables-retrieve-data-ajax/</link>
					<comments>https://www.itoffside.com/howto-datatables-retrieve-data-ajax/#comments</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Sat, 25 Mar 2017 16:04:11 +0000</pubDate>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[DataTables]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQLi]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2678</guid>

					<description><![CDATA[<p>DataTables เป็นส่วนเสริมของ jQuery (Javascript library) ซึ่ง Datatables เป็นเครื่องมือที่มีความหยืดหยุ่นในการใช้งาน ได้หลากหลายรูปแบบ โดย DataTables จะนำข้อมูลออกมาแสดงในรูปแบบของตาราง มีการเรียงลำดับตามคอลัมน์ มีการค้นหา และที่สำคัญสุดมีการจัดการในเรื่องของการแบ่งหน้าของตารางอีกด้วย และดึงข้อมูลแบบ...</p>
<p>The post <a href="https://www.itoffside.com/howto-datatables-retrieve-data-ajax/">การติดตั้งใช้งาน Datatables กับการดึงข้อมูลแบบ AJAX Server-side [PHP+MySQL]</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong><span style="color: #ff00ff;">DataTables</span></strong> เป็นส่วนเสริมของ<span style="color: #ff00ff;"> jQuery (Javascript library)</span> ซึ่ง Datatables เป็นเครื่องมือที่มีความหยืดหยุ่นในการใช้งาน ได้หลากหลายรูปแบบ โดย DataTables จะนำข้อมูลออกมาแสดงในรูปแบบของตาราง มีการเรียงลำดับตามคอลัมน์ มีการค้นหา และที่สำคัญสุดมีการจัดการในเรื่องของการแบ่งหน้าของตารางอีกด้วย และดึงข้อมูลแบบ AJAX โดยดึงข้อมูลที่ใช้จริงมาแสดง เช่น ดึงข้อมูลที่หน้า 5 จำนวน 10 แถว เป็นต้น โดยเพียงการเขียนโค๊ดเพียงไม่กี่บรรทัดเท่านั้นเอง</p>
<p>สำหรับ source code DataTables Plugin สามารถดาวน์โหลดได้ฟรี ครับ<br />
<span id="more-2678"></span></p>
<p>ซึ่งเนื้อหาบทความนี้ จะสอนวิธีการติดตั้ง ตั้งแต่เริ่มต้นพร้อมคำอธิบาย รูปภาพประกอบกันไปเลยเพื่อให้ผู้อ่าน ได้มีความเข้าใจได้ง่ายขึ้น</p>
<p><strong><span style="color: #ff6600;">ทดสอบการใช้งาน <a style="color: #ff6600;" href="http://sysapp.itoffside.com/datatables/" target="_blank">(DEMO) คลิกที่นี้เพื่อทดสอบ</a></span></strong></p>
<p>เรามาเริ่มกันเลยดีกว่า วิธีการติดตั้งขั้นตอนแรกให้เราไปโหลด Sourcecode DataTables จากลิงค์ดาวน์โหลดจากเว็บหลักที่นี้ <a href="https://datatables.net/download/packages" target="_blank">https://datatables.net/download/packages</a><br />
<img loading="lazy" decoding="async" class="alignnone wp-image-2681 size-full" src="https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-01.jpg" alt="" width="685" height="445" srcset="https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-01.jpg 685w, https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-01-300x195.jpg 300w" sizes="auto, (max-width: 685px) 100vw, 685px" /></p>
<p>&nbsp;</p>
<p>หลักจากนั้นให้เราแตกไฟล์ Sourcecode ที่ได้โหลดมา แล้ว Copy โฟล์เดอร์ media มาทั้งหมดมาวางไว้ในภายในโปรเจคที่เราจะเรียกใช้งานนะครับ</p>
<p>ต่อจากนั้นโหลดไฟล์ฐานข้อมูลที่ชื่อ datatables.sql เพื่อใช้สำหรับเป็นข้อมูลทดสอบสำหรับบทความนี้นะครับ <a href="https://raw.githubusercontent.com/ipball/ex_datatables/master/datatables.sql" target="_blank">คลิกเพื่อดาวน์โหลด</a></p>
<p>ดาวน์โหลดไฟล์ ssp.class.php <a href="https://raw.githubusercontent.com/ipball/ex_datatables/master/ssp.class.php" target="_blank">คลิกเพื่อดาวน์โหลด</a> ไฟล์นี้คือชุดคำสั่งเรียกข้อมูลจาก mysql</p>
<p>ดาวน์โหลดมาแล้วให้ทำการ import ข้อมูลลงสู่ฐานข้อมูล วิธีการคือ<br />
1. สร้างชื่อฐานข้อมูลในตัวอย่างบทความนี้ใช้ชื่อ datatables พอใส่ชื่อเสร็จกดปุ่ม Create ได้เลย<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2682" src="https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-02.jpg" alt="" width="549" height="200" srcset="https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-02.jpg 549w, https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-02-300x109.jpg 300w" sizes="auto, (max-width: 549px) 100vw, 549px" /></p>
<p>2. คลิกเลือกเมนู import ตรงเมนูบน<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2683" src="https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-03.jpg" alt="" width="378" height="212" srcset="https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-03.jpg 378w, https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-03-300x168.jpg 300w" sizes="auto, (max-width: 378px) 100vw, 378px" /></p>
<p>3. คลิกเลือกปุ่ม &#8220;เลือกไฟล์&#8221;แล้วเลือกไฟล์ฐานข้อมูลที่เราดาวน์โหลดมาเมื่อกี้ครับ (datatables.sql)<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2684" src="https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-04.jpg" alt="" width="431" height="300" srcset="https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-04.jpg 431w, https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-04-300x209.jpg 300w" sizes="auto, (max-width: 431px) 100vw, 431px" /></p>
<p>หลักจากที่เรา import ข้อมูลเสร็จแล้ว ขั้นตอนต่อไปเป็นการเรียกใช้งานนะครับ<br />
<span style="color: #ff0000;"><em>การเรียกใช้งานจำเป็นต้องมีไฟล์ jquery นะครับ ถ้าหากไม่มี datatables จะไม่ทำงาน!</em></span><br />
1. ให้ include ไฟล์ js &#8212; jquery.dataTables.js และไฟล์ css &#8212; jquery.dataTables.min.css ไว้บน &lt;header&gt;</p><pre class="crayon-plain-tag">&lt;link rel="stylesheet" type="text/css" href="media/css/jquery.dataTables.min.css"&gt;
&lt;script src="media/js/jquery.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="media/js/jquery.dataTables.js" type="text/javascript"&gt;&lt;/script&gt;</pre><p>2. ในส่วนของเนื้อหาที่จะแสดงตารางข้อมูล ให้นำโค๊ดตัวอย่างด้านล่างนี้ใส่ไปครับ</p><pre class="crayon-plain-tag">&lt;table id="example" class="display" cellspacing="0" width="100%"&gt;
      &lt;thead&gt;
        &lt;tr&gt;
          &lt;th&gt;First name&lt;/th&gt;
          &lt;th&gt;Last name&lt;/th&gt;
          &lt;th&gt;Position&lt;/th&gt;
          &lt;th&gt;Office&lt;/th&gt;
          &lt;th&gt;Start date&lt;/th&gt;
          &lt;th&gt;Salary&lt;/th&gt;
        &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tfoot&gt;
        &lt;tr&gt;
          &lt;th&gt;First name&lt;/th&gt;
          &lt;th&gt;Last name&lt;/th&gt;
          &lt;th&gt;Position&lt;/th&gt;
          &lt;th&gt;Office&lt;/th&gt;
          &lt;th&gt;Start date&lt;/th&gt;
          &lt;th&gt;Salary&lt;/th&gt;
        &lt;/tr&gt;
      &lt;/tfoot&gt;
    &lt;/table&gt;</pre><p>3. เขียนคำสั่ง javascript ให้เรียกใช้งาน</p><pre class="crayon-plain-tag">&lt;script type="text/javascript"&gt;
  $(document).ready(function() {
    $('#example').DataTable( {
      "processing": true,
      "serverSide": true,
      "ajax": "server_processing.php"
    } );
  } );
  &lt;/script&gt;</pre><p><span style="color: #ff00ff;"><strong>คำอธิบาย</strong>ของโค๊ดนี้คือ ดึงข้อมูลแบบ server-side โดยให้ไฟล์ server_processing.php ประมวลผลข้อมูลแล้วนำกลับมาใช้ที่หน้าตารางนี้ โดยโค๊ดของไฟล์ server_processing.php จะเรียกข้อมูลมาเฉพาะที่จะแสดงผลเท่านั้น เช่นดึงข้อมูลหน้า 5 และดึงมาเพียง 10 แถวเท่านั้น</span><br />
ให้เราสร้างไฟล์ server_processing.php และนำโค๊ดด้านล่างนี้วาง แล้วกด Save ครับ</p><pre class="crayon-plain-tag">&lt;?php
//ชื่อตาราง
$table = 'datatables_demo';
//ชื่อคีย์หลัก
$primaryKey = 'id';
//ข้อมูลอะเรที่ส่งป datables
$columns = array(
  array( 'db' =&gt; 'first_name', 'dt' =&gt; 0 ),
  array( 'db' =&gt; 'last_name',  'dt' =&gt; 1 ),
  array( 'db' =&gt; 'position',   'dt' =&gt; 2 ),
  array( 'db' =&gt; 'office',     'dt' =&gt; 3 ),
  array(
    'db' =&gt; 'start_date',
    'dt' =&gt; 4,
    'formatter' =&gt; function( $d, $row ) {
      return date( 'jS M y', strtotime($d));
    }
  ),
  array(
    'db' =&gt; 'salary',
    'dt' =&gt; 5,
    'formatter' =&gt; function( $d, $row ) {
      return '$'.number_format($d);
    }
    )
  );

  //เชื่อต่อฐานข้อมูล
  $sql_details = array(
    'user' =&gt; 'root',
    'pass' =&gt; '',
    'db'   =&gt; 'datatables',
    'host' =&gt; 'localhost'
  );
  // เรียกใช้ไฟล์ spp.class.php
  require( 'ssp.class.php' );

//ส่งข้อมูลกลับไปเป็น JSON โดยข้อมูลถูกดึงมาจากการเรียกใช้ class ssp
  echo json_encode(
      SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
  );</pre><p><strong><span style="color: #ff00ff;">คำอธิบาย</span></strong><br />
<span style="color: #ff00ff;"> เป็นไฟล์ที่ใช้ในการดึงข้อมูลจากฐานข้อมูลมาแล้วมาจัดรูปแบบข้อมูลให้อยู่ในแบบที่ต้องการ โดยจัดเป็นแบบ Array ส่วนไฟล์ที่เรียกใช้ฐานข้อมูลคือไฟล์ ssp.class.php</span><br />
<span style="color: #ff00ff;"> ในส่วนของรายละเอียดการเชื่อมต่อฐานข้อมูลตรงนี้ เราต้องใส่ให้ถูกต้องกับข้อมูล Server ของเราด้วยครับ</span></p>
<p>ลองดูผลลัพธ์ด้านล่าง<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-2686" src="https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-05.jpg" alt="" width="921" height="527" srcset="https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-05.jpg 921w, https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-05-300x172.jpg 300w, https://www.itoffside.com/wp-content/uploads/2017/03/datatables-ajax-processing-05-768x439.jpg 768w" sizes="auto, (max-width: 921px) 100vw, 921px" /></p>
<p>ต่อ&#8230; สำหรับใครต้องการผลรวมแต่ละหน้า สามารถทำได้โดยเขียน script javascript เพิ่มเติมใน</p><pre class="crayon-plain-tag">$('#example').DataTable( {</pre><p>ตามโค๊ดด้านล่างนี้นะครับ</p><pre class="crayon-plain-tag">"footerCallback": function ( row, data, start, end, display ) {
            var api = this.api(), data;

            // Remove the formatting to get integer data for summation
            var intVal = function ( i ) {
                return typeof i === 'string' ?
                    i.replace(/[\$,]/g, '')*1 :
                    typeof i === 'number' ?
                        i : 0;
            };

            // Total over all pages
            total = api
                .column( 5 )
                .data()
                .reduce( function (a, b) {
                    return intVal(a) + intVal(b);
                }, 0 );

            // Total over this page
            pageTotal = api
                .column( 5, { page: 'current'} )
                .data()
                .reduce( function (a, b) {
                    return intVal(a) + intVal(b);
                }, 0 );

            // Update footer
            $( api.column( 5 ).footer() ).html(
                '$'+pageTotal +' total'
            );
        }</pre><p>&nbsp;</p>
<p>จบแล้วสำหรับบทความนี้<br />
สำหรับ Source code ตัวอย่าง แบบเต็มสามารถดาวน์โหลดได้ที่ <a href="https://github.com/ipball/ex_datatables/archive/master.zip" target="_blank">https://github.com/ipball/ex_datatables/archive/master.zip</a></p>
<p>หรือ Clone Git <a href="https://github.com/ipball/ex_datatables" target="_blank">https://github.com/ipball/ex_datatables</a></p>
<p>ทางผู้เขียนคงคิดว่าน่าจะมีประโยชน์สำหรับคนที่เข้ามาอ่านไม่มากก็น้อย แต่ก็ดีใจครับ ที่ยังมี ฮ่าๆ หากมีข้อสงสัยตรงไหน คอมเม้นไว้ด้านล่างเลยครับ&#8230;ขอบคุณครับ</p><p>The post <a href="https://www.itoffside.com/howto-datatables-retrieve-data-ajax/">การติดตั้งใช้งาน Datatables กับการดึงข้อมูลแบบ AJAX Server-side [PHP+MySQL]</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/howto-datatables-retrieve-data-ajax/feed/</wfw:commentRss>
			<slash:comments>19</slash:comments>
		
		
			</item>
	</channel>
</rss>
