This is more php coding relevant than modx doing itself.
For your problem, the ajax way comes in my mind. I suppose you have a good php exp and basic javascript to work on jquery for sending request to MODx resource (eg: processAjax). And this processAjax resource will include the snippet which you have to write your own. For easier developing, you can use the source file for this snippet, so you can work it outside than edit it in the web manager.
So, what this snippet does, you ask:
- use $_REQUEST[] to get variables for filtering
- pass variables to xPDO.Where query to filter out data
- return the data to view by directly echo (bad way), and $modx->toPlaceholder(array,prefix) (better way, docs on:
http://rtfm.modx.com/display/revolution20/modX.toPlaceholders). The latter will create some placeholder eg: [[+tv.name]], etc, then you can place them to a template chunk, and render them all before return the result.
OR, you directly render your data as json data and work on javascript to render the data.
Things to consider:
- paging
- is category, district,etc dynamic? If yes, you should write a snippet which gonna do $modx->getObject(name,query——array) to get the data and $modx->toPlaceholder() to pass it to placeholders. Use those placeholders to decorate your search page.