The Datatable 1.10.9 has been released now, Datatable is the most popular grid plugin in web development. The main benefit of Datatable is the open source and light-weighted jquery plugin. You can use this plugin with other CSS frameworks like bootstrap and foundation. There are a lot of datatable plugins are available which useful to improve UI experience.
I got huge response from reader on previous datatable tutorial which was DataTables Example – Server-side Processing with PHP.I have used JSON data in code instead of fetch data from the MySQL database, So I have got many requests to share code with PHP, MySQL using ajax.
Also Checkout other tutorial of Datatable,
- Part 1: Introduction of Datatable
- Part 2- DataTables Example – Server-side Processing with PHP
- Part 3 – How to add RowId and RowClass on each record using Datatable
- Part 4 – Datatable Pagination, Sorting and Search – Server Side (PHP/MySQl) Using Ajax
- Part5 – Export the jQuery Datatable data to PDF,Excel,CSV and Copy
- Part 6 – Datatable Responsive – Using PHP and Mysql with Ajax
Video Tutorial:
If you are more comfortable in watching a video that explains about Datatable Pagination, Sorting and Search – Server Side(PHP) Using Ajax, then you should watch this video tutorial.
Datatable Server Side Integration Using PHP
There are following files are participate in this Datatble tutorial:
Index.php -
This file will responsible to create html and instance datatable using jquery code.
response.php -
This file responsible to create database connection string and convert records into json string and returns data to Ajax method as response.
connection.php -
This file responsible to create mysql database connection.
Datatable Example with PHP,MySql server side Using Ajax
We will create simple PHP application to fecth data from server using PHP.The php is using mysql to store and fetch data.
The jQuery datatable help to display records into html page with pagination sorting and searching feature.
How To Create MySQL Database Connection Using mysql_connect
We will Create db_connect.php
file into root of the project path, Now we will put the below connection code in this file.
$dbhost = 'localhost'; $dbuser = 'root'; $dbpass = ""; $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); $dbname = 'test'; $connection = mysql_select_db($dbname);
Step 1: we will include jquery datatable and jquery library.
<script type="text/javascript" src="https://cdn.datatables.net/r/dt/dt-1.10.9/datatables.min.js"></script> <script type="text/javascript" charset="utf8" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js"></script>
Step 2: Create HTML layout in your web page (index.php
).
<div class="container"> <div class=""> <h1>Data Table</h1> <div class=""> <table id="employee_grid" class="display" width="100%" cellspacing="0"> <thead> <tr> <th>Empid</th> <th>Name</th> <th>Salary</th> <th>Age</th> </tr> </thead> <tfoot> <tr> <th>Empid</th> <th>Name</th> <th>Salary</th> <th>Age</th> </tr> </tfoot> </table> </div> </div> </div>
Step 3: Instantiate datatable object on table(index.php
).
$( document ).ready(function() { $('#employee_grid').DataTable({ "bProcessing": true, "serverSide": true, "ajax":{ url :"response.php", // json datasource type: "post", // type of method , by default would be get error: function(){ // error handling code $("#employee_grid_processing").css("display","none"); } } }); });
Above code – We have applied datatable on employee_grid
table.The serverSide have the rest url path which will use to get data from backend server.
Step 4: Include connection file into top of the response.php
file.
//include connection file include_once("db_connect.php");
Step 5: Using parameters to create sql.
- $params[‘order’] : This array contains order information of clicked column
- $params[‘search’] : This array contains serach value information datatable
- $params[‘start’] : start limit of data
- $params[‘length’] : end limit of data
$sql = "SELECT * FROM `employee` ORDER BY id asc LIMIT ".$params['start']." ,".$params['length']." ";
Step 6: Send json data to the index.php
file.
$json_data = array( "draw" => intval( $params['draw'] ), "recordsTotal" => intval( $totalRecords ), "recordsFiltered" => intval($totalRecords), "data" => $data // total data array );
You can download source code and Demo from below link.
Hi Parvez,
Thanks for this wonderful post.
I followed your tutorial in one of my project. Its working fine, just for 2 things I need your help. (1) The search is not functioning. And (2) I want to add a hyperlink to a field. On clicking it, the details view page of the record will be displayed. I don’t know how to acomplish this. I have tried some code which creates the desired hyperlink but the url valiable is not passed. Even the text of hyperlink is displaying “Undefined”. If you need to see my code,
Can you suggest me what’s wrong?
i checked and found that your code link has been removed.
sorry, the code is there but the hyperlink at phpflow is appending “)”. Just remove the last “)” in the url and check it. Thank you for your prompt response.
ok, i will try when i ll get time.
the code for adding hyperlink in datatable cell doesnt work
i used in my table its work,hv u checked anchor tag html using firebug or other degugger?
This is code to add hyperlink in datatable cell,
“serverSide”: true,
“aoColumnDefs”: [
{
“aTargets”:[1],
“mData”: null,
“mRender”: function( data, type, full) {
console.log(data);
return +data[1];
}
}
],
“ajax”:{
url :”response.php”, // json datasource
type: “post”, // type of method , by default would be get
error: function(){ // error handling code
$(“#employee_grid_processing”).css(“display”,”none”);
}
}
Hi kamlesh
Thank you very much.
By this project “Datatable CRUD Operation Using Ajax with Bootstrap 5, PHP and MySQL” I have always this warning:
DataTables warning: table id=dt-employee – Invalid JSON response. For more information about this error, please see http://datatables.net/tn/1
Can you help me?
Normally this error occurred by two reason: The JSON data is not valid, Other is col number/name mismatch
Hi,
Thanks a lot for this tutorial, it really help me.
i need help in something .. i have a DATE as a fields so how i can arrange your code to make the sorting works.
thks again.
thanks, i ll send you code once ill get time
Hello.
I’m new to AJAX and libraries in general when it comes to web development, so I have a few questions.
Let me start off with telling you that I have a CSGO server up and running, and I want to display data to my visitors from this database. Configuring the connection and SQL queries was ok, but now I’ve run into some problems.
1. I want to display a column “Rank”, which is not in the database, but given to the players depending on their ‘score’. EG: The player with the highest score gets rank 1, second highest rank 2 etc.
With PHP this was easy enough, I just set the $rank to $totalPages * $perPage and incremented the $rank per row. But so far I havent figured out how to do this in AJAX.
2. In my database I can see kills, deaths, shots, hits and headshots. I want to display to my visitors the amount of % headshots and their kill/death-ratio. Do you have any idea how to make this query with AJAX, and also how to add an extra column to display this? Thus far I just get errors when adding more columns than expected.
Thank you so much for the code and continously help. It is very appreciated!
EDIT: I forgot to ask about the ORDER BY. I can see that this is set to order the first column by an ascending order. Is there any way to customize this? I would like to have it to order by score in an descending order instead!
Again, thank you so much for your help!
As per my understanding about your questions,
You can do same thing using mysql script very easily or you can create mysql views and get records from mysql views instead of table.
ORDER BY – You can set using data table parameter,
Hello,
Please how do i make one of the fiels clickable say the name field so that user can click to open or download a file
ok,i ll share code with this
Hello,
Thanks for sharing this nice article , I would like to know how i send data (as object) to the server side , for example i would like to send employee data (first name,last name..ect ) and do the search at the database based on this values .
Here is my code but it doesn’t work for me
function SearchEmps(empData) { // javaScript object with employee data(first name,last name..ect )
var DTO = { ’empData’: empData };
$(‘#employee_grid’).DataTable({
“bProcessing”: true,
“serverSide”: true,
“ajax”:{
url :”response.php”, // json datasource
type: “post”, // type of method , by default would be get
data: JSON.stringify(DTO),
error: function(){ // error handling code
$(“#employee_grid_processing”).css(“display”,”none”);
}
});
}
// Server side Get data and perform search….
this is sample code to send custom parameters to serverside datatable:
var data = { ‘name’: ‘parvez’, ‘lname’:’alam’};
$(‘#employee_grid’).DataTable({
“bProcessing”: true,
“serverSide”: true,
“responsive”: true,
“ajax”:{
url :”response.php”, // json datasource
type: “post”, // type of method ,GET/POST/DELETE
error: function(){
$(“#employee_grid_processing”).css(“display”,”none”);
},
“data”: function ( d ) {
d.cParms = data;
}
}
});
Nice, thx! Exactly what i was looking for
Thankx its work fine,
but i have some queries,
I need to put tag in b’coz i want to show image in table from database.
I also need a link for some action like Update & Delete.
please help me to solve out this.
Thank You.
Ya sure, i ll share with image nd action tag
Can you share the download link with me in my email ?
you can get download link using share social link
This code is older one, i need work with and in as i tell you in Discussion.
can you give me notification about updated code
Hello, when you update the code if you already updated then plz give me link of that page
Chkout my latest tuts
https://phpflow.com/php/parse-json-data-jquery-datatable/
Chkout my latest tutorial
As you have mentioned that you have the source code on the demo link. But there is no source code.
it was on source code link instead of demo link,that is typo error.
How to search data using multiple column or individual column server side and also wildcard search…..
how do i put edit link in every last rows of the table..pls help me for this..
if link is dynamic then you need to parse data as like this tutorial ‘https://phpflow.com/php/parse-json-data-jquery-datatable/’ and if static then you can pass a constant.
The above page is not available
Now page up
Thanks
i have 20 fileds and i just want to get the filed 1,2,4,8 and 20 filed records…how can i do that.,.please help.. thanks in advance phpflow.
in js side,
You need to unset those index fields in ajax
“dataSrc”: function (jsonData) {
for ( var i=0, len=jsonData.data.length ; i<len ; i++ ) {
delete(jsonData.data)
jsonData.splice( i, 1 );
}
Server side:
You can send response of those col values/index which u need to show in table
thats a lot of work for a server especially if you have a large db. as it stands you have set the query to search the whole db by using the * (search all). to make life simpler not only for yourself but also for the server just search columns that you choose in the query. My code is slightly different because my db name is not the same as yours and neither are my column names but take a look at the code i have edited in response.php. //define index of column
$columns = array(
0 =>’memberID’,
1 =>’username’,
2 => ‘urank’,
3 => ‘gender’,
4 =>’datejoined’,
5 =>’lastseen’,
6 => ‘country’
);
$where = $sqlTot = $sqlRec = “”;
// check search value exist
if( !empty($params[‘search’][‘value’]) ) {
$where .=” WHERE “;
$where .=” ( memberID LIKE ‘”.$params[‘search’][‘value’].”%’ “;
$where .=” OR username LIKE ‘”.$params[‘search’][‘value’].”%’ “;
$where .=” OR urank LIKE ‘”.$params[‘search’][‘value’].”%’ “;
$where .=” OR gender LIKE ‘”.$params[‘search’][‘value’].”%’ “;
$where .=” OR datejoined LIKE ‘”.$params[‘search’][‘value’].”%’ “;
$where .=” OR lastseen LIKE ‘”.$params[‘search’][‘value’].”%’ “;
$where .=” OR country LIKE ‘”.$params[‘search’][‘value’].”%’ )”;
}
// getting total number records without any search
$sql = “SELECT memberID, username, urank, gender, datejoined, lastseen, country FROM `members` “;
i assumed, developer at-least change column name,db name,label etc before use it.
where is the download link?
first need to share tutorial then u ll get enable download link
I had 2 tables, t1 has id, name and t2 has cid, value. t1 id has foreignkey cid. In your code u fetch full row and assign it to data[]. i need to display t2. First i fetch cid, then search cid from t1 then fetch name. i need to display name, cid, value. how to display 3 values, what can i do… U cannot understand my question just send mail to me, i ill give brief explanation. Thanks advance….
Hey yesterday post comment to you. but you Not approve my comment.
In this belowed code, u fetch the value as a row. i want to fetch id and compare with other table. fetch certain value and display that value. for example table Name t1 and t2.. t1 has id, name. t2 has id and value. i need fetch t1 id and compare the id with t2 id, and fetch t2 value and display in data tables. what can i do…
You can handle this on server side or create seperate js method which processed ur logic then send data to dt instance.
Ok, no issue. But i fetch a value from table how to apply search for that value.. Great Response..
Awsome one..really helpful
thanks dude, just little bit modify working great in codeigniter
Hi
Its grate table, but is there any way where we can perform search at client side for data which loaded in one chunk. Lest say if I loaded 100 data then search will be perform on this particular records just like old data-table do. Please confirm its very help full to us to user new table.
yes, you can add client side searching
Hi
Thanks, can you please elaborate more how we can use both ajax and client search in one table based on some flag.
sorry 4 late rply, you can get more information from here
https://datatables.net/forums/discussion/15722/plugin-for-client-side-searching-filtering-sorting-and-server-side-pagination
Could you pls tell how can add a new custom column? I want to add a radio button for each row to create a select event
You can get help from my datatable parse json tuts
How can i add href link on any of the table data
Eg: if want add a link on employee id to divert to employee detail page or something like that
Please help me
Connection error, db string might be not set
How can I get resultant data in success event. I append success event there after that dataTable is not working. any help?
You can call datatable getlistdata on succes handler
Hi, I’m from Argentina, could you help me if I ask you a question?
Ya sure, but i m working person so may be it could be bit late
Yes, plz go ahead
without code debug is too difficult
Hi
My $json_data seems OK with print_r. but, json_encode doesnt return anything.
can u please share json_data, to verify error
Thank you for this tutorial, very helpful. 🙂
how to download the code?
using like or tweet button
Hi,
I change added new table then i changed only colunm name but it did not work. I did not change anything. do you think what can be wrong!
may be cache issue
Thank you so much for this tutorial!! I’ve been trying to make a datatable server side without success since forever, all the documentation out there is pretty confusing. I finally could understand it and make it work thanks to you. You are my hero. :D!!!
Exactly the same as previous comment by Vi ! This is article is brilliant, thank you so much !