Hola moro666:
En primer lugar, no entiendo por qué pones esto:
Cita: El problema es que en PHP no me basta con las clausulas and y or.
Primero, hay que entender que son dos cosas muy diferentes PHP y MySQL... no confundir las condiciones para cada uno de ellos... Segundo, el problema tal como lo planteas se puede resolver sólo con AND...
No hay una única estrategia que pueda recomendar, depende de muchas cosas, pero la idea general es construir un select dinámico, que dependa de los valores de tu formulario... Sería más o menos así
Código:
consulta = 'SELECT * FROM tuTabla WHERE';
Si el formulario trae nombre entonces
consulta = consulta + 'campo nombre = nombre_formulario and'
Si el formulario trae apellido entonces
consulta = consulta + 'campo_apellido = apellido_formulario and'
si el formulario trae edad entonces
consulta = consulta + 'campo_edad = edad_formulario and';
....
....
....
Todos los demás campos
....
....
....
De esta manera con 7 condiciones tipo if estarías abarcando todas las posibilidades...
Esto lo puedes hacer desde PHP o con sentencias preparadas en MySQL...
Saludos
Leo.