Postingan lainnya
serverside datatable with PHP + ORACLE
saya kesulitan ketika ingin menampilkan data dengan jumlah banyak lebih dari 1jt data ke dalam datatable (dari oracle), jika saya paksakan untuk menampilkan data tersebut tanpa (serverside) mungkin browser akan menload dengan estimasi kisaran 3-4menit.. karena ada serverside memungkinkan hanya akan ditampilkan data pada page yg sedang aktif (1-3 detik)..
saya menemukan versi serverside php+sql di link berikut : <a href='https://www.phpflow.com/php/datatable-pagination-sorting-and-search-server-side-phpmysql-using-ajax/'>https://www.phpflow.com/php/datatable-pagination-sorting-and-search-server-side-phpmysql-using-ajax/</a>
dan saya coba edit versi saya dengan memakai oracle : - php 5.2 - wamp 2.0 - oracle client 11g - oci8 - datatable 1.10
jika melihat link diatas, saya kesulitan di LIMIT, karena di oracle tidak ada limit, jadi data muncul hanya page 1 , saat pindah ke page 2, data tidak terbaca.. bagaimana solusinya ?
index.php
<div class="container">
<div class="">
<br>
<div class="">
<table id="employee_grid" class="display" width="100%" cellspacing="0">
<thead>
<tr>
<th>PAYMENTCODE</th>
<th>TRXID</th>
<th>TRXNAME</th>
</tr>
</thead>
<tfoot>
<tr>
<th>PAYMENTCODE</th>
<th>TRXID</th>
<th>TRXNAME</th>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
<script type="text/javascript">
$( document ).ready(function() {
$('#employee_grid').DataTable({
"bProcessing": true,
"serverSide": true,
"scrollX": true,
"pageLength": 100,
"scrollY": "400px",
"scrollCollapse": true,
"ajax":{
url :"response.php", // json datasource
type: "post", // type of method ,GET/POST/DELETE
error: function(){
$("#employee_grid_processing").css("display","none");
}
}
});
});
</script>
response.php
<?php
function koneksi_oracle()
{
$conn = oci_connect('WEBR', 'REPORT', 'db');
if (!$conn)
{
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
return $conn;
}
$conn = koneksi_oracle();
$params = $columns = $totalRecords = $data = array();
$params = $_REQUEST;
$columns = array(
0 => 'PAYMENTCODE',
1 => 'TRXID',
2 => 'TRXNAME'
);
$sql = "SELECT count(*) as c FROM db.trx WHERE trxdate = to_date('2018-05-02','yyyy-mm-dd')";
$query=ociparse($conn, $sql);
ociexecute($query);
oci_fetch_all($query, $result);
$numrows = $result['C'][0];
$totalRecords = $numrows;
$sql2 = "SELECT * FROM db.trx WHERE trxdate = to_date('2018-05-02','yyyy-mm-dd') AND rownum BETWEEN ".$params['start']." AND ".$params['length']."";
$query2=ociparse($conn, $sql2);
ociexecute($query2);
while($row=oci_fetch_array($query2))
{
$data[] = $row;
}
$json_data = array(
"draw" => intval($params['draw']),
"recordsTotal" => intval($totalRecords),
"recordsFiltered" => intval($totalRecords),
"data" => $data // total data array
);
echo json_encode($json_data); // send data as json format
?>
hasilnya :
saat pindah ke halaman 2, data tidak muncul:
sepertinya salahnya ada disini :
$sql2 = "SELECT * FROM db.trx WHERE trxdate = to_date('2018-05-02','yyyy-mm-dd') AND rownum BETWEEN ".$params['start']." AND ".$params['length']."";
2 Jawaban:
<div>apakah anda berhasil menemukan solusinya? Karena saya sedang menghadapi masalah yang sama</div>