Please visit http://www.stumbleupon.com/
It asks you what interests you.
I would have a similar thing on my website except I would need to have 4 of such non-identical blocks. When a user has not selected anything in a section, it means s/he has selected all of them. 1 block would have around 10 options while the other 3 would have 2-3 options each.
How do I pass what all a user has selected to SQL? Please note I would have 4 sets of multiple params, and these 4 sets are basically 4 different columns in the row all containing integer id's. If and only if one param per section was passed, I would have done something like
select * from table where column1 = @param1, column2 = @param2 and so on.
I can get this done, but I want to know the most efficient way.