I’m using CodeIgniter for a classifieds website. Here’s a specific example of what I’m trying to achieve:
On page http://www.example.com/browse/Real-Estate all the Real Estate classifieds are listed. I’m using CI’s Pagination Class to paginate the results.
On the leftbar, a set of filters are shown that correspond to each db column of the “Real Estate Classifieds” table. For example:
Type : House, Apartment
Bedrooms : 1,2,3,4…
Furnished: Yes, No
etc.
Each time the user selects a value, a query runs and the results are updated with Ajax.
However, since the selecting of a value corresponds to an additional “WHERE” clause in the initial query, I was wondering which would be the best way to filter the already available results without re-running the query.
Why are you opposed to running an additional query? If the user starts with a broad query with no filters, filtering it down would mean iterating over the result set and performing filter checks on every row. If the user starts with a narrow query with filters, changing or removing filters would require a new query anyway, and adding filters would require iteration over the result set.
If I were you, I’d build a filter system that works in all conditions, sends information to the server to be built into a query, builds a view with the query results, and returns the HTML as a string to the browser where you can use jQuery (or whatever) to insert it into your results box. Doing this would save you the most time, allow you to write the least amount of Javascript, and, I think, make your application appear quite snappy (as opposed to using Javascript to iterate over large result sets).