Skip to content

Instantly share code, notes, and snippets.

@EricYue2012
Created November 14, 2013 06:04
Show Gist options
  • Save EricYue2012/7462188 to your computer and use it in GitHub Desktop.
Save EricYue2012/7462188 to your computer and use it in GitHub Desktop.
Re-order data when click a column header (new field)
1. click html header -> generate new url with query string including new orderby field name
2. php parse query string, handle filed name
//html
<tr><td align="left" width="10%" class="table_toprow"><div class="orderby" id="job_serial_number"><b>Serial Number</b></div></td>
<td align="left" width="10%" class="table_toprow"><div id="invoice_status"><b>Invoice Status</b></div></td>
<td align="left" width="20%" class="table_toprow"><div class="orderby" id="job_name"><b>Name</b></div></td>
<td align="left" width="10%" class="table_toprow"><div class="orderby" id="job_brand"><b>Brand</b></div></td>
<td align="left" width="10%" class="table_toprow"><div class="orderby" id="cl_companyname"><b>Client</b></div></td>
<td align="left" width="10%" class="table_toprow"><div class="orderby" id="job_client_contact"><b>Contact</b></div></td>
<td align="left" width="10%" class="table_toprow"><div class="orderby" id="agnt_surname"><b>Agent</b></div></td>
<td align="left" width="10%" class="table_toprow"><div id="job_date"><b>Date</b></div></td>
</tr>
// css
<style>
.orderby:hover{
cursor:pointer;
}
</style>
// javascript
<script type="application/javascript">
function updateQueryStringParameter(uri, key, value) {
var re = new RegExp("([?|&])" + key + "=.*?(&|$)", "i");
separator = uri.indexOf('?') !== -1 ? "&" : "?";
if (uri.match(re)) {
return uri.replace(re, '$1' + key + "=" + value + '$2');
}else {
return uri + separator + key + "=" + value;
}
}
$('document').ready(function(){
$('div.orderby').click(function(event){
window.location.href = updateQueryStringParameter(window.location.href, "orderby", this.id);
});
});
</script>
// php
// parames $orderby_input - what feild you want to order by
// parames $session_order_key - key used by session for the field
// parames $session_asc_key - key used by session for the field
// return string like "order by surname ASC"
// example updateOrderby('client_surname', 'surname', 'asc_order')
// client_surname => field name
// surname => $_SESSION['surname']
// asc_order => $_SESSION['asc_order']
// return like "client_surname ASC" or "client_surname DESC"
function updateOrderby($orderby_input, $session_order_key, $session_asc_key){
if($orderby_input == $_SESSION[$session_order_key]){
if(!empty($_SESSION[$session_asc_key]) && $_SESSION[$session_asc_key] == "ASC"){
$_SESSION[$session_asc_key] = 'DESC';
}else if(!empty($_SESSION[$session_asc_key]) && $_SESSION[$session_asc_key] == "DESC"){
$_SESSION[$session_asc_key] = 'ASC';
}
}else{
$_SESSION[$session_order_key] = $orderby_input;
$_SESSION[$session_asc_key] = 'ASC';
}
return $_SESSION[$session_order_key].' '.$_SESSION[$session_asc_key];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment