Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/09/2010, 18:01
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Ayuda para crear algoritmo o una forma mas facil de realizar esto

Cita:
Iniciado por LOD_Fredy Ver Mensaje
... 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 Ver Mensaje
... 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,