Thanks for your input. I knew i could count on someone 😉.
I hear you about the sessions, but this is a single page--we're not aggregating a series of results here. Basically, people come to the page and the data results default to 'all data'. the user will proceed to filter down the results by clicking first letter filter, sorting, etc.
Additionally, I'd like people to be able to bookmark results and/or mail them to each other. I've only realized this as i work on it.
SO, i've basically resigned myself to a bunch of query string parsing code. my form is method=GET, and the various links all add additional parameters to the query string. i am parsing all the GET vars and aggregating a few varieties of the complete query string. for the first letter links, i've got a variant of everything but $GET['first_letter'], for the sort links, i've got a variant with everything but $GET['sort'] and $_GET['sort_order'], etc.
then when someone clicks on one of the filtering links, all those little get parameters are added up and passed along.
it's a pain but it's working. sadly, there's a whole stack of just plain old iterated logic. not much in the way of loops or whatever to make it more elegant. sigh. it's 3 am here. i trudge onward.