Yo usaria ajax, debes entender que javascript "pasa" en el cliente y la consulta a la bbdd "pasa" en el servidor.
Aquí lo que estamos haciendo es usar javascript para construir una peticion al servidor, el "alert(..." de la linea que indicas tiene que sustituirse por la peticion al servidor. La petición la puedes hacer llamando una URL con lo que se recargará toda la pagina o puedes usar ajax para recargar una parte de la pagina...
Código HTML:
<script>
function clientSideInclude(id, url) {
var req = false;
// For Safari, Firefox, and other non-MS browsers
if (window.XMLHttpRequest) {
try {
req = new XMLHttpRequest();
} catch (e) {
req = false;
}
} else if (window.ActiveXObject) {
// For Internet Explorer on Windows
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
req = false;
}
}
}
var element = document.getElementById(id);
if (!element) {
alert("Bad id " + id +
"passed to clientSideInclude." +
"You need a div or span element " +
"with this id in your page.");
return;
}
if (req) {
// Synchronous request, wait till we have it all
req.open('GET', url, false);
req.send(null);
element.innerHTML = req.responseText;
} else {
element.innerHTML =
"Sorry, your browser does not support " +
"XMLHTTPRequest objects. This page requires " +
"Internet Explorer 5 or better for Windows, " +
"or Firefox for any system, or Safari. Other " +
"compatible browsers may also exist.";
}
}
</script>
clientSideInclude(
id,
url)
Esta funcion te permite cargar, en un
div de la pagina, la
url que llames sin recargar toda la pagina...
Luego imagina que tienes una pagina con el filtro y un div con id="resultado" y un archivo.php capaz de construir la sentencia sql, ejecutarla y poner el resultado de la consulta en una tabla...
Si sustituyes el "alert(..." por
clientSideInclude('
resultado',
'archivo.php?campo='+ document.getElementById("campo").value
+'&contenido='+document.getElementById("contenido ").value);
que te parece que va a pasar....
Quim