<p class="wp-block-paragraph">วิà¸à¸µà¹à¸à¹à¸à¸²à¸ Datatable.js à¹à¸à¸¢à¸à¸²à¸£ Query à¸à¹à¸à¸¡à¸¹à¸¥à¸à¸¶à¹à¸à¸¡à¸²à¹à¸ªà¸à¸à¹à¸à¸£à¸¹à¸à¹à¸à¸à¸à¸à¸à¸à¸²à¸£à¸²à¸à¸à¹à¸à¸¡à¸¹à¸¥ มีà¹à¸£à¸·à¹à¸à¸à¸à¹à¸²à¸à¸§à¸à¸«à¸±à¸§à¸à¸µà¹à¹à¸£à¸²à¸¡à¸±à¸à¸à¸°à¹à¸à¸à¸à¸·à¸ à¸à¹à¸à¸¡à¸¹à¸¥à¸à¸µà¹à¸à¸¶à¸à¸à¸¶à¹à¸à¸¡à¸²à¹à¸ªà¸à¸à¸à¸±à¹à¸ à¹à¸¡à¹à¹à¸à¹à¸à¸¹à¸à¸à¸à¸à¹à¸à¸à¹à¸«à¹à¸à¸¢à¸¹à¹à¹à¸à¸à¸²à¸£à¸²à¸à¸à¹à¸à¸¡à¸¹à¸¥à¹à¸à¸µà¸¢à¸§à¸à¸±à¸ à¹à¸à¹à¸¡à¸±à¸à¸à¸°à¸à¸¹à¸à¹à¸à¹à¸à¹à¸§à¹à¹à¸à¸«à¸¥à¸²à¸¢à¸à¸²à¸£à¸²à¸à¸à¹à¸à¸¡à¸¹à¸¥ </p>



<p class="wp-block-paragraph">à¹à¸¥à¸°à¸à¸²à¸à¸à¸µà¸à¸²à¸£à¹à¸ªà¸à¸à¸à¹à¸à¸¡à¸¹à¸¥à¹à¸à¸à¸£à¸²à¸¢à¸à¸²à¸ มัà¸à¸à¸°à¸¡à¸µà¹à¸£à¸·à¹à¸à¸à¸à¸à¸à¸à¸²à¸£ Filter à¸à¹à¸à¸¡à¸¹à¸¥à¹à¸à¸à¸²à¸£à¸²à¸à¹à¸à¸´à¹à¸¡à¹à¸à¹à¸²à¸¡à¸²à¸à¸µà¸ à¸à¸·à¸à¸¡à¸µà¹à¸à¸·à¹à¸à¸à¹à¸à¹à¸à¸à¸²à¸£à¹à¸ªà¸à¸à¸à¸¥à¸à¸à¸à¸à¹à¸à¸¡à¸¹à¸¥ à¹à¸à¹à¸ à¸à¸²à¸£à¹à¸ªà¸à¸à¸à¸¥à¹à¸à¸à¸à¸³à¸«à¸à¸à¸§à¸±à¸à¸à¸µà¹à¹à¸£à¸´à¹à¸¡à¸à¹à¸ à¹à¸¥à¸°à¸§à¸±à¸à¸à¸µà¹à¸ªà¸´à¹à¸à¸ªà¸¸à¸à¸à¸à¸à¸à¹à¸à¸¡à¸¹à¸¥ à¸à¸³à¸«à¸à¸à¸à¸£à¸°à¹à¸ ภหรืà¸à¸ªà¸à¸²à¸à¸°à¸à¸à¸à¸à¹à¸à¸¡à¸¹à¸¥à¹à¸à¹à¸à¸à¹à¸</p>



<h4 class="wp-block-heading">วิà¸à¸µà¹à¸à¹ datatables join à¸à¹à¸à¸¡à¸¹à¸¥ 2 à¸à¸²à¸£à¸²à¸</h4>



<p class="wp-block-paragraph">à¹à¸à¸à¸±à¸§à¸à¸¢à¹à¸²à¸à¹à¸£à¸²à¸à¸°à¸ªà¸£à¹à¸²à¸à¸à¸²à¸£à¸²à¸à¸à¹à¸à¸¡à¸¹à¸¥à¸à¸¶à¹à¸à¸¡à¸² 2 à¸à¸²à¸£à¸²à¸ à¸à¸·à¸ bill à¹à¸¥à¸° expense à¸à¸±à¹à¸ 2 à¸à¸²à¸£à¸²à¸à¸¡à¸µ primary key à¸à¸µà¹à¹à¸à¸·à¹à¸à¸¡à¹à¸¢à¸à¸à¸±à¸à¸à¸¢à¸¹à¹ à¹à¸¥à¸°à¸à¹à¸à¸à¸à¸²à¸£à¹à¸«à¹à¸à¹à¸à¸¡à¸¹à¸¥à¸à¸²à¸à¸à¸±à¹à¸ 2 à¸à¸²à¸£à¸²à¸à¸¡à¸²à¹à¸ªà¸à¸à¸à¸¥à¹à¸ datatables à¸à¸²à¸£à¸²à¸à¸¥à¸° 1 column </p>



<p class="wp-block-paragraph">สà¹à¸§à¸à¸à¸à¸ javascript à¸à¸°à¹à¸à¸µà¸¢à¸à¸à¸³à¸ªà¸±à¹à¸à¹à¸à¸·à¹à¸à¸à¸à¹à¸à¹à¸à¹à¸à¸±à¸à¸à¸µà¹ ( main.js )</p>



<pre class="wp-block-code"><code lang="php" class="language-php">
$('.reportTable').DataTable({
 "columns": [
 {"width": "10%" },
 {"width": "10%" },
 ],
 "ajax": {
 "url": "bill.php",
 "type": "POST",
 "data": function (post) {

 }
 },
 "serverSide": true,
});</code></pre>



<p class="wp-block-paragraph">à¹à¸¥à¸°à¸ªà¹à¸§à¸à¸à¸à¸ server side ( bill.php ) à¸à¸°à¹à¸à¸µà¸¢à¸à¸à¸³à¸ªà¸±à¹à¸à¹à¸à¸à¸²à¸£ join à¸à¹à¸à¸¡à¸¹à¸¥à¹à¸¥à¸° return à¸à¹à¸²à¸à¸¥à¸±à¸à¹à¸à¹à¸ªà¸à¸à¸à¸¥à¹à¸à¹à¸à¸±à¸à¸à¸µà¹</p>



<pre class="wp-block-code"><code lang="php" class="language-php"> require APPPATH . 'libraries/ssp.customized.class.php';
 $table = 'bill';
 $primaryKey = 'uid';
 $joinQuery = "";
 $extraWhere = "";
 $groupBy = "";
 $having = "";
 
 $table_arr = array(
 array(
 'db' =>; 'bill.bill_datetime', 'dt' =>; 0, 'field' =>; 'bill_datetime',
 'formatter' =>; function ($bill_datetime, $row) {
 return $bill_datetime;
 }
 ),
 array(
 'db' =>; 'expense.expense_id', 'dt' =>; 1, 'field' =>; 'expense_id',
 'formatter' =>; function ($expense_id, $row) {
 return $expense_id;
 }
 ),
 
 );
 
 // à¹à¸à¸µà¸¢à¸à¸à¸³à¸ªà¸±à¹à¸ join à¸à¹à¸à¸¡à¸¹à¸¥ 2 à¸à¸²à¸£à¸²à¸ à¸à¸·à¸ bill à¹à¸¥à¸° exepense à¹à¸§à¹à¸à¸µà¹ query หลัà¸
 $joinQuery = "FROM bill AS bill JOIN expense AS expense ON (expense.expense_uid = bill_history.expense_uid)";

 echo json_encode(
 SSP::simple($this->;input->;post(), $sql_details, $table, $primaryKey, $table_arr, $joinQuery, $extraWhere, $groupBy, $having)
 );</code></pre>



<h4 class="wp-block-heading">à¸à¸²à¸£ Filter ( à¸à¸£à¸à¸à¸à¹à¸à¸¡à¸¹à¸¥ ) à¹à¸à¸¢à¹à¸à¹ extraWhere </h4>



<p class="wp-block-paragraph">à¸à¸£à¸à¸µà¸à¸µà¹à¹à¸£à¸²à¸à¹à¸à¸à¸à¸²à¸£à¸à¸£à¸à¸à¸à¹à¸à¸¡à¸¹à¸¥à¸à¸µà¹à¸à¸°à¹à¸ªà¸à¸à¸à¸¥à¹à¸à¸à¸²à¸£à¸²à¸ à¹à¸à¹à¸ à¸à¸²à¸£à¸à¸³à¸«à¸à¸à¸§à¸±à¸à¹à¸£à¸´à¹à¸¡à¸à¹à¸ วัà¸à¸ªà¸´à¹à¸à¸ªà¸¸à¸à¸à¸à¸à¸à¹à¸à¸¡à¸¹à¸¥ หรืà¸à¸à¸²à¸£à¸à¸³à¸«à¸à¸à¸à¸£à¸°à¹à¸ à¸à¸à¸à¸à¸à¹à¸à¸¡à¸¹à¸¥ à¹à¸£à¸²à¸ªà¸²à¸¡à¸²à¸£à¸à¹à¸à¹ extraWhere à¹à¸à¹à¸²à¸¡à¸²à¸à¹à¸§à¸¢à¹à¸à¹</p>



<p class="wp-block-paragraph">à¹à¸£à¸´à¹à¸¡à¸à¹à¸à¹à¸¥à¸¢à¹à¸à¸ªà¹à¸§à¸à¸à¸à¸ javascript à¹à¸à¸¥à¹ main.js à¹à¸«à¹à¹à¸à¸´à¹à¸¡à¸à¸±à¸§à¹à¸à¸£ ajax post à¹à¸à¹à¸²à¹à¸à¸à¹à¸§à¸¢ à¸à¸±à¸§à¸à¸¢à¹à¸²à¸à¸à¸°à¹à¸à¸µà¸¢à¸à¸à¸³à¸ªà¸±à¹à¸à¹à¸à¸´à¹à¸¡à¹à¸à¹à¸²à¹à¸à¹à¸à¹à¸à¹à¸à¸à¹à¸à¹à¸à¸à¹à¸à¹à¸à¸±à¸à¸à¸µà¹</p>



<pre class="wp-block-code"><code lang="php" class="language-php">"ajax": {
 "url": report_billsConfig.report_bills_url,
 "type": "POST",
 "data": function (post) {
 post.expense_type = 1;
 post.startDate = '2020-01-01';
 post.stopDate = '2021-01-01';
 post.length = 25;
 }
 },</code></pre>



<p class="wp-block-paragraph">à¹à¸à¸à¸±à¹à¸ server side ( bill.php ) à¹à¸£à¸²à¸à¸°à¹à¸à¸µà¸¢à¸à¸£à¸±à¸à¸à¸±à¸§à¹à¸à¸£à¹à¸¥à¸°à¹à¸à¸´à¹à¸¡ extraWhere à¹à¸à¹à¸²à¹à¸ à¹à¸à¸·à¹à¸à¸à¸³à¸à¸²à¸£à¸à¸£à¸à¸à¸à¹à¸à¸¡à¸¹à¸¥à¸à¸£à¸°à¹à¸ à¸à¸à¸à¸ expense à¹à¸¥à¸° วัà¸à¹à¸£à¸´à¹à¸¡à¸à¹à¸ สิà¹à¸à¸ªà¸¸à¸à¸à¸à¸ bill à¹à¸à¹à¸à¸±à¸à¸à¸µà¹</p>



<pre class="wp-block-code"><code lang="php" class="language-php">$expensed_type = $_POST['expensed_type'];
 $startDate = $_POST['startDate'];
 $endDate = $_POST['endDate'];

 // à¹à¸ªà¸à¸à¸à¸¥à¸à¹à¸à¸¡à¸¹à¸¥à¹à¸à¸à¸à¸³à¸«à¸à¸à¸§à¸±à¸à¹à¸£à¸´à¹à¸¡à¸à¹à¸ à¹à¸¥à¸°à¸ªà¸´à¹à¸à¸ªà¸¸à¸à¸à¸à¸à¸à¹à¸à¸¡à¸¹à¸¥à¸à¸²à¸£à¸²à¸ bill
 $extraWhere .= 'DATE(bill.bill_datetime) >;= "' . $startDate . '" AND DATE(bill.bill_datetime) <;= "' . $endDate . '"';
 // à¹à¸ªà¸à¸à¸à¸¥à¸à¹à¸à¸¡à¸¹à¸¥à¹à¸à¸à¸à¸³à¸«à¸à¸à¸à¸£à¸°à¹à¸ à¸à¸à¸à¸à¸à¹à¸à¸¡à¸¹à¸¥à¸à¸²à¸£à¸²à¸ expense
 $extraWhere .= " AND expense.expensed_type = " . $expensed_type;
 
 $joinQuery = "FROM bill AS bill JOIN expense AS expense ON (expense.expense_uid = bill.expense_uid)";

 echo json_encode(
 SSP::simple($this->;input->;post(), $sql_details, $table, $primaryKey, $table_arr, $joinQuery, $extraWhere, $groupBy, $having)
 );</code></pre>



<p class="wp-block-paragraph">à¸à¸²à¸à¸à¸±à¸§à¸à¸¢à¹à¸²à¸à¹à¸à¹à¸à¸à¸²à¸£à¹à¸à¹à¸à¸²à¸ datatables à¸à¹à¸²à¸à¸à¸ à¹à¸£à¸²à¸ªà¸²à¸¡à¸²à¸£à¸à¹à¸à¸´à¹à¸¡à¸à¸²à¸£ join มาà¸à¸à¸§à¹à¸² 1 à¸à¸²à¸£à¸²à¸ à¸à¹à¸§à¸¢à¸à¸²à¸£à¹à¸à¸µà¸¢à¸à¹à¸à¸´à¹à¸¡à¸à¸µà¹à¸ªà¹à¸§à¸à¸à¸à¸ joinQuery à¹à¸¥à¸° à¸à¹à¸²à¸à¹à¸à¸à¸à¸²à¸£à¹à¸à¸´à¹à¸¡à¸à¸²à¸£ filter ( à¸à¸£à¸à¸à¸à¹à¸à¸¡à¸¹à¸¥ ) หลายà¹à¸à¸·à¹à¸à¸à¹à¸ à¸à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¹à¸à¸´à¹à¸¡à¹à¸à¹à¹à¸à¸ªà¹à¸§à¸à¸à¸à¸ extraWhere </p>



<p class="wp-block-paragraph">สำหรัà¸à¸à¸²à¸£à¹à¸à¹à¸à¸²à¸ datatables à¹à¸à¸à¸²à¸£à¸£à¸±à¸à¹à¸«à¸¥à¸à¸à¹à¸à¸¡à¸¹à¸¥à¸à¸³à¸à¸§à¸à¸¡à¸²à¸ สามารà¸à¸à¹à¸²à¸à¸§à¸´à¸à¸µà¸à¸²à¸£à¹à¸à¹à¸à¸²à¸à¹à¸à¹à¸à¸µà¹ <a href="https://www.codebee.co.th/labs/datatables-js-à¹à¸à¹-ajax-à¹à¸«à¸¥à¸à¸à¹à¸à¸¡à¸¹à¸¥à¸à¸µà¸¥à¸°à¸«à¸à¹/" target="_blank" rel="noreferrer noopener">Datatables.js à¹à¸à¹ Ajax à¹à¸«à¸¥à¸à¸à¹à¸à¸¡à¸¹à¸¥à¸à¸µà¸¥à¸°à¸«à¸à¹à¸²à¹à¸à¸´à¸ 10,000 Row</a></p>

วิธีใช้งาน Datatable.js แบบ Join ข้อมูลหลาย Table และหลาย เงื่อนไข

วิธีใช้งาน-datatables-js
