The most efficient way to do what you're asking (and to avoid postback) is to use your query to create some JavaScript arrays, then create some JavaScript functions to populate your data fields with the appropriate array. As usual, you need to consider security when using this approach since each array will appear in the HTML. Plus, it can be a little tricky, but worth it for the right situation.
Just by way of some basic code, you're probably looking for something like this in your <HEAD> section:
<script type="text/javascript">
<!--
var futureEvents = new Array();
var pastEvents = new Array();
var allEvents = new Array();
<?php
// Get some data...
$query = "SELECT field1, field2, field3 FROM growl_eventall ".
"WHERE eventDate > Now() ORDER BY eventDate DESC";
$result = mysql_query($query, $link);
$i = 0;
// Populate the futureEvents array...
while($row = mysql_fetch_array($result))
{
extract($row);
echo "futureEvents[$i] = new Array('$field1', '$field2', '$field3');";
}
// etc...repeat query & with past & all events.
?>
-->
</script>
I'm not sure what your HTML looks like, but you'd want to use an onChange event to display the selected array:
<select name='eventCategory' onChange='populate_list(this, event)'>
<option value='0'>Future</option>
<option value='1'>Past</option>
<option value='2'>All</option>
</select>
This is an incomplete answer because I'm not sure how your data is set up, but hopefully you get the idea. There's a lot of good tutorials out there about populating fields using Javascript arrays.