In this article we will learn how to do Sorting in PHP using AJAX. The connection between PHP and the MySQL database is done in the config.php file. 
Table creation
-- phpMyAdmin SQL Dump
-- version 2.11.4
-- http://www.phpmyadmin.net
-- Host: localhost
-- Generation Time: Nov 22, 
2008 at 03:06 AM
-- Server version: 5.0.51
-- PHP Version: 5.2.5 
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
-- Database: `home_work`
-- Table structure for table 
`user_info`
CREATE TABLE `user_info`
 (
  `id_user_info` int(11) NOT 
NULL auto_increment,
  `fullname` varchar(255) NOT 
NULL default '',
  `email` varchar(255) NOT 
NULL default '',
  `contact_no` varchar(255) 
NOT NULL default '',
  PRIMARY KEY  (`id_user_info`)
) 
TYPE=MyISAM AUTO_INCREMENT=24 
; 
-- Dumping data for table `user_info`
INSERT INTO `user_info` 
VALUES (1, 'John Smith', '[email protected]', '98675410181');
INSERT INTO `user_info` 
VALUES (2, 'Micheal Doughlas', '[email protected]', '98675410131');
INSERT INTO `user_info` 
VALUES (3, 'Mary Anderson', '[email protected]', '91675433181');
INSERT INTO `user_info` 
VALUES (4, 'James McCarthy', '[email protected]', '98675550131');
INSERT INTO `user_info` 
VALUES (5, 'Rosalind Holmes', '[email protected]', '94675433181');
INSERT INTO `user_info` 
VALUES (6, 'Pete McCuin', '[email protected]', '98475550131');
INSERT INTO `user_info` 
VALUES (7, 'Nicolas Finh', '[email protected]', '98675410181');
INSERT INTO `user_info` 
VALUES (8, 'Tommy Lee', '[email protected]', '98675710131');
INSERT INTO `user_info` 
VALUES (9, 'Sujoku Jim', '[email protected]', '91675433181');
INSERT INTO `user_info` 
VALUES (10, 'James Hull', '[email protected]', '98655550131');
INSERT INTO `user_info` 
VALUES (11, 'Sherly Peters', '[email protected]', '94675433181');
INSERT INTO `user_info` 
VALUES (12, 'Abraham Holder', '[email protected]', '98400550131');
INSERT INTO `user_info` 
VALUES (13, 'Pete Sampras', '[email protected]', '98600010132');
INSERT INTO `user_info` 
VALUES (14, 'Kirk Doughlas', '[email protected]', '98675410144');
INSERT INTO `user_info` 
VALUES (15, 'Dorothy James', '[email protected]', '91675433165');
INSERT INTO `user_info` 
VALUES (16, 'Sebastian Urchin', '[email protected]', '98675550197');
INSERT INTO `user_info` 
VALUES (17, 'Tabitha Gregory Golmes', '[email protected]', '94675433133');
INSERT INTO `user_info` 
VALUES (18, 'Albert Einstien', '[email protected]', '98475550144');
INSERT INTO `user_info` 
VALUES (19, 'Yasser Arafat', '[email protected]', '98675410155');
INSERT INTO `user_info` 
VALUES (20, 'Bruce Lee', '[email protected]', '98675710166');
INSERT INTO `user_info` 
VALUES (21, 'Johny Depp', '[email protected]', '91675433171');
INSERT INTO `user_info` 
VALUES (22, 'Celina Jaitly', '[email protected]', '98655550199');
INSERT INTO `user_info` 
VALUES (23, 'Leander Peas', '[email protected]', '94675433100');
config.php
<?php
$DBHOST =
"localhost";
$DBNAME =
"home_work";
$DBUSER =
"root";
$sLink = 
mysql_connect($DBHOST,$DBUSER,'') 
or 
die('Connection 
with MySql Server failed');
mysql_select_db($DBNAME, $sLink) or 
die('MySql 
DB was not found');
?>
Sorting.php
<?php
include('./config.php');
?>
<html>
<head>
<title>User 
Information</title>
<script
type="text/javascript"
src="./ajax_sort.js"></script>
<style
type="text/css">
.blackText{
font-weight:normal;
font-size:11.5px;
font-family:
verdana, arial, helvetica, sans-serif;
color:#000000;
font-style:normal;
}
.grayText{
font-weight:normal;
font-size:11px;
font-style:normal;
font-family:
verdana, arial, helvetica, sans-serif;
color:#333333;
}
.errText{
font-weight:italic;
font-size:10.5px;
font-family:
verdana, arial, helvetica, sans-serif;
color:red;
}
</style>
</head>
<body>
<?php
include('./records.php');?>
</body>
</html>
records.php
<?php
if($_POST['orderby'])
{
      
include('./config.php');
       $sOrderBy 
= $_POST['orderby'];
}
else
$sOrderBy =
"id_user_info 
ASC"
$sSelQry =
"SELECT * FROM user_info ORDER BY 
$sOrderBy";
$aUserInfo = 
mysql_query($sSelQry); 
//===============================
if 
($sOrderBy 
== 
'fullname ASC')
$sOrderByFN 
= 'fullname 
DESC';
else
$sOrderByFN 
= 'fullname 
ASC';
//===============================
if 
($sOrderBy 
== 
'email ASC')
$sOrderByEM 
= 
'email DESC';
else
$sOrderByEM 
= 
'email ASC';
//===============================
if 
($sOrderBy 
== 
'contact_no ASC')
$sOrderByCN 
= 'contact_no 
DESC';
else
$sOrderByCN 
= 'contact_no 
ASC';
//===============================
?>
<div
id="sorting_rec">
<table
cellspacing="1"
style="border:
1px solid #000000;
width:550px;"
align="center">
<tr
style="background-color:#70988D">
<td
class="blackText"
style="width:60px"
align="center"><b>Sl. 
No.</b></td>
<td
class="blackText"
style="width:150px"
align="center"><b><a
style="cursor:pointer;"
onclick="ajax_sort('<?php
echo($sOrderByFN)?>')">Fullname</a></b><?php
if($sOrderBy 
== 'fullname ASC') 
{ ?> <img
src="./s_desc.png"><?php 
} elseif($sOrderBy 
== 'fullname DESC') 
{ ?> <img
src="./s_asc.png"><?php 
} ?></td>
<td
class="blackText"
style="width:220px"
align="center"><b><a
style="cursor:pointer;"
onclick="ajax_sort('<?php
echo($sOrderByEM)?>')">Email</a></b><?php
if($sOrderBy 
== 'email ASC') 
{ ?> <img
src="./s_desc.png"><?php 
} elseif($sOrderBy 
== 'email DESC') 
{ ?> <img
src="./s_asc.png"><?php 
} ?></td>
<td
class="blackText"
style="width:120px"
align="center"><b><a
style="cursor:pointer;"
onclick="ajax_sort('<?php
echo($sOrderByCN)?>')">Contact 
No</a></b><?php
if($sOrderBy 
== 'contact_no ASC') 
{ ?> <img
src="./s_desc.png"><?php 
} elseif($sOrderBy 
== 'contact_no DESC') 
{ ?> <img
src="./s_asc.png"><?php 
} ?></td>
</tr>
<?php
$i = 0;
while($aUserInfoRS 
= mysql_fetch_array($aUserInfo)) {
$sUserName = 
$aUserInfoRS['fullname'];
$sEmail = $aUserInfoRS['email'];
$sContact = 
$aUserInfoRS['contact_no'];
$i++;
?>
<tr
style="background-color:#CCDAD6;">
<td
class="blackText"
align="center"><?php
echo($i)?></td>
<td
class="blackText"><?php
echo($sUserName)?></td>
<td
class="blackText"><?php
echo($sEmail)?></td>
<td
class="blackText"
align="center"><?php
echo($sContact)?></td>
</tr>
<?php 
} ?>
</table>
</div>
ajax_sort.js
function 
ajax_sort(sort_order) {
           http_request =
false;
          
if (window.XMLHttpRequest) {
// Mozilla, Safari,...
               
http_request = new XMLHttpRequest();
              
if (http_request.overrideMimeType) {
                  
// set type accordingly to anticipated content type
                  
//http_request.overrideMimeType('text/xml');
                   
http_request.overrideMimeType('text/html');
               }
           }
else if (window.ActiveXObject) 
{ // IE
              
try {
                   
http_request = new ActiveXObject("Msxml2.XMLHTTP");
               }
catch (e) {
                  
try {
                       
http_request = new ActiveXObject("Microsoft.XMLHTTP");
                   }
catch (e) { }
               }
           }
          
if (!http_request) {
               alert('Cannot 
create XMLHTTP instance');
              
return false;
           }
 
          
var url = 'records.php';
          
var parameters = 'orderby=' 
+ sort_order;
            
http_request.onreadystatechange = ajax_sort_callback;
           
http_request.open('POST', url,
true);
           http_request.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
           
http_request.setRequestHeader("Content-length", 
parameters.length);
           
http_request.setRequestHeader("Connection",
"close");
           
http_request.send(parameters);
       } 
      
function ajax_sort_callback() {
          
if (http_request.readyState == 4) {
              
if (http_request.status == 200) {
                   result 
= http_request.responseText;
                   //alert(result);
                  
//return 
false;                                                                                                                                
                   
document.getElementById('sorting_rec').innerHTML 
= result;
               }
              
else {
                   alert('There 
was a problem with the request.');
               }
           }
       }
Running the application
Run the 
WampServer then write the below line in the Url:
http://localhost/Sorting
Output
![sorting1.gif]()
![sorting2.gif]()
![sorting3.gif]()