Básicamente, en la página que procesa tienes dos partes:
- El código PHP de conexión/consulta/muestra de los resultados, que es casi genérico, de molde.
- El código de la consulta SQL; es aquí en donde tienes que indicar exactamente qué quieres, y dependerá de cómo tengas armadas las tablas.
Suponiendo que tengas una tabla para región, con un
id_region; una para la empresa, con un
id_empresa; una para la sucursal, con un
id_sucursal; y una para los funcionarios, que tenga el nombre de los funcionarios, un
id_funcionario y los
ids de la región, la empresa y la sucursal, entonces en la consulta no tendrías que preocuparte más que por la última tabla, ya que podrías trabajar con los
ids. Supongamos que el usuario quiere poder elegir si usar o no esos "filtros" (los
selects de los que hablas), entonces sería muy práctico que los selects tengan todas las opciones con id y descripción, y una opción extra que sirva para no usar ese filtro en particular. Esta opción extra puede tener
id=0 dado que si los
ids de las tablas son autoincrementables (deberían serlo), empezarían a partir de 1. Bien, entonces para la página del formulario tendrías que leer las tablas de tu BD para poder armar los
selects. En la página que procesa, la única parte "peliaguda" es armar la consulta SQL. Para eso puedes hacer lo siguiente:
Código PHP:
$sql="SELECT * FROM funcionarios WHERE nombre_funcionario LIKE '%".$_POST['funcionario']."%'";
if($_POST['region']!=0)
{
$sql.=" AND id_region=".$_POST['region'];
}
if($_POST['empresa']!=0)
{
$sql.=" AND id_empresa=".$_POST['empresa'];
}
if($_POST['sucursal']!=0)
{
$sql.=" AND id_sucursal=".$_POST['sucursal'];
}
$sql.=";";
Con eso estarás agregando las condiciones que seleccionan los usuarios, sólo si éstos las seleccionan. Como ya tienes una condición inicial, los AND pueden agregarse uno atrás del otro, sin miedo de que la consulta quede mal sintácticamente. En los casos en que no hay una condición que vaya siempre, yo suelo agregar como condición "1=1", que como es una tautología, valida siempre, lo cual es útil para concatenar
ANDs. Se me hizo un poco larga la explicación, espero que haya quedado claro. ¡Suerte!
PD: ¡un poco más de autoestima amigo!, estoy seguro de que si eres capaz de hacer y entender el buscador, sólo debes tener un poco más de paciencia.