Cita:
Iniciado por LOD_Fredy ... no se si este mal hecha la base de datos ...
Yo menos
... solo es una posibilidad, aunque yo puedo estar equivocado. Todavía no has dicho las especificaciones exactas, bases de datos, tipos de campos, etc.
Cita:
Iniciado por LOD_Fredy ... Se cuenta con 6 campos a los cuales ellos les llaman filtros. Un usuario puede decidir buscar ya sea por 1 de esos filtros, por 2, 3, etc y esos 1,2,3..,6 filtros pueden ser cualquiera, de aqui el que sean muchas las posibles combinaciones de busqueda (que segun dice hack son 126). ...
Ok, realmente son 128 combinaciones diferentes, es decir 2^N, siendo N = 7 en este caso te da exactamente 128. Yo puse 127 combinaciones en el ejemplo puesto que no estaba incluyendo el caso de que todos fueran 'empty', si hubiera incluido eso serían 128 como había indicado previamente.
El método para hacer esto está en varios posts aquí en este mismo foro, solo tienes que buscar un poco mas, pero normalmente se usa la concatenación de strings en función de los parámetros, por ejemplo:
Pseudo-código:
Código PHP:
SQLString = "SELECT * FROM tabla WHERE ";
if (!empty($_POST['variable1'])) {
SQLString .= "dato1 = {$_POST['variable1']} AND ";
}
if (!empty($_POST['variable2'])) {
SQLString .= "dato2 = {$_POST['variable2']} AND";
}
....
SQLString = SQLString - AND
Esto genera un string, dependiendo si todos los valores fueron enviados:
'SELECT * FROM tabla WHERE dato1 = valor1 AND dato2 = valor2'
o solamente algunos:
'SELECT * FROM tabla WHERE dato2 = valor2'
Saludos,