How do I do table sorting using CodeIgniter?


I've been developing a site over the past few weeks using CodeIgniter as the framework. I've been thinking of the best way to accomplish something, which in a lot of other frameworks in other languages is relatively simple: sortable tables. CodeIgniter switches off query strings by default, because your URLs contain method parameters. So a URL might look like:


You might think that you could just add in sortBy and sortOrder as two additional parameters to the controller method. I don't particularly want to do that, mainly because I want to have a re-usable controller. When you use query string parameters, PHP can easily tell you whether there is a parameter called sortBy. However, when you're using URL based parameters, it will vary with each controller.

I was wondering what my options were. As far as I can see they are something like:

  • Pass in my sortBy and sortOrder parameters, just suck it up, and develop some less-than-reusable component for it.
  • Have an additional controller, which will store the sortBy and sortOrder in the session (although it would have to know where you came from, and send you back to the original page).
  • Have some kind of AJAX function, which would call the controller above; then reload the page.
  • Hack CodeIgniter to turn query strings back on. Actually, if this is the only option, any links to how to do this would be appreciated.

I just can't quite believe such a simple task would present such a problem! Am I missing something? Does anyone have any recommendations?

Edit for clarification: I love jQuery, and I'm already using it on the site, so TableSorter is a good option. However, I would like to do server-side sorting as there are some pages with potentially large numbers of results, including pagination.

12/30/2011 1:21:12 AM

Accepted Answer

I have been using this method:

I also expanded it to set cookies based off the sort so when someone comes back the table is sorted the same as before.

9/23/2008 2:33:21 PM

If you're OK with sorting on the client side, the Tablesorter plugin for jQuery is pretty nice.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow