Para hacer consultas a la base de datos y ponerlos en la misma pagina sin recargar necesariamente tienes que usar ajax, prepare un ejmplo asi de rapido ya lo adaptas a tus necesidades.
el index.php
Código PHP:
<html>
<head>
<title>Prueba Ajax</title>
<script type="text/javascript" src="js/ajax.js"></script>
</head>
<body>
<div>
<form name="form1" method="post" action="">
<label>
<select name="selectAnyoActividad" id="selectAnyoActividad" onChange="carga_act();">
<option value="0">Seleccione</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
</select>
</label>
</form>
</div>
<div id="principal"></div>
</body>
</html>
actividades.php
Código PHP:
<?
$selectAnyoActividad=$_REQUEST['selectAnyoActividad'];
echo "El Año Seleccionado es: " . $selectAnyoActividad;
//aqui haces las consultas para que te cargue las actividades del año seleccionado.
?>
y el maravillos ajax.js
Código PHP:
function objetoAjax(){
var xmlhttp=false;
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch (E){
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined'){
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function carga_act(){
divResultado = document.getElementById('principal');//div donde se cargara
selectAnyoActividad = document.getElementById('selectAnyoActividad').value;//valor del Año
ajax = objetoAjax();
ajax.open("POST", "actividades.php", true);
ajax.onreadystatechange = function(){
if (ajax.readyState==4){
divResultado.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send("selectAnyoActividad="+selectAnyoActividad)
}
el ajax lo guardas en la carpeta js
y listo eso deberia andarte.
Saludos.