Foros del Web » Programando para Internet » PHP »

buscador avanzado duda: consulta sql

Estas en el tema de buscador avanzado duda: consulta sql en el foro de PHP en Foros del Web. Buenos dias, mirar tengo 2 formularios checkbox con 10 palabras cada uno, de esos 2 formularios puedo seleccionar como maximo 3 palabras en cada uno ...
  #1 (permalink)  
Antiguo 21/08/2015, 14:16
 
Fecha de Ingreso: agosto-2015
Mensajes: 34
Antigüedad: 8 años, 8 meses
Puntos: 0
buscador avanzado duda: consulta sql

Buenos dias, mirar tengo 2 formularios checkbox con 10 palabras cada uno, de esos 2 formularios puedo seleccionar como maximo 3 palabras en cada uno ( es decir 6 variables en total, una para cada palabra)


como tengo 6 variables y es de buscar si tienen coincidencia con una tabla de 20 columnas, como puedo hacerlo?

porque una vez puedo tener 1 variable solo seleccionada, otra 3, otra 5 otra 6 (como maximo he de recordar)

y eso genera diferentes consultas....

os pongo un ejemplo que tengo hecho (aqui se supone que la variable 1 y 2 !=0, pero la 3 es 0, luego del segundo checkbox la primera variable es distinta de 0 pero la 2 y 3 es 0, los adjetivos simpatico etc etc son columnas de un perfil de personalidad

Código PHP:
Ver original
  1. $sql = "SELECT * FROM basico2 WHERE  (simpatico LIKE '$var1' OR responsable LIKE '$var1' OR positivo LIKE '$var1' OR emprendedor LIKE '$var1' OR aventurero LIKE '$var1' OR independiente LIKE '$var1' OR ambicioso LIKE '$var1' OR inteligente LIKE '$var1' OR energico LIKE '$var1'  OR interesante LIKE '$var1' OR trabajador LIKE '$var1' OR apasionado LIKE '$var1' OR excentrico LIKE '$var1' OR maduro LIKE '$var1' OR alegre LIKE '$var1' OR tolerante LIKE '$var1' OR divertido LIKE '$var1' OR noble LIKE '$var1' OR sincero LIKE '$var1' OR humilde LIKE '$var1' OR deportista LIKE '$var1' ) AND
  2.    
  3. (simpatico LIKE '$var2' OR responsable LIKE '$var2' OR positivo LIKE '$var2' OR emprendedor LIKE '$var2' OR aventurero LIKE '$var2' OR independiente LIKE '$var2' OR ambicioso LIKE '$var2' OR inteligente LIKE '$var2' OR energico LIKE '$var2'  OR interesante LIKE '$var2' OR trabajador LIKE '$var2' OR apasionado LIKE '$var2' OR excentrico LIKE '$var2' OR maduro LIKE '$var2' OR alegre LIKE '$var2' OR tolerante LIKE '$var2' OR divertido LIKE '$var2' OR noble LIKE '$var2' OR sincero LIKE '$var2' OR humilde LIKE '$var2' OR deportista LIKE '$var2' )   AND            
  4.  
  5.  
  6. (detallista LIKE '$var11' OR leal LIKE '$var11' OR sensible LIKE '$var11' OR atento LIKE '$var11' OR autosuficiente LIKE '$var11'OR romantico LIKE '$var11' OR dulce LIKE '$var11' OR planificador LIKE '$var11' OR cariñoso LIKE '$var11' OR comprensivo LIKE '$var11' OR puntual LIKE '$var11' OR caballero LIKE '$var11') ";
  7. }

la consulta busca los usuarios con el contenido de personalidad especificado en las variables

podeis ayudarme a hacer esta consulta mas eficiente y que no tenga que hacer una para cada una de las 3^3 combinaciones....


perdonar si me expreso mal.... pero es complicado
  #2 (permalink)  
Antiguo 21/08/2015, 16:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: buscador avanzado duda: consulta sql

1- Crea un array con los nombres de los campos
2- El filtro armas como una cadena aparte
3- Recorres el array de campos para verificar si se marcó el checkbox corespondiente y lo agregas al filtro
4- Unes la consulta y el filtro... voilà!
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 22/08/2015, 03:21
 
Fecha de Ingreso: agosto-2015
Mensajes: 34
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: buscador avanzado duda: consulta sql

Cita:
Iniciado por Triby Ver Mensaje
1- Crea un array con los nombres de los campos
2- El filtro armas como una cadena aparte
3- Recorres el array de campos para verificar si se marcó el checkbox corespondiente y lo agregas al filtro
4- Unes la consulta y el filtro... voilà!
no he entendido el punto 2 y el 4

el uno y 3 ya lo tengo hecho salvo lo de "agregas al filtro"


muchas gracias por tu ayuda
  #4 (permalink)  
Antiguo 22/08/2015, 14:22
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: buscador avanzado duda: consulta sql

Código PHP:
Ver original
  1. $buscar = $_GET['buscar']; // Tienes que limpiar para evitar ataques XSS e inyección SQL
  2. $campos = array('campo1', 'campo2', 'etc');
  3. $filtros = array();
  4.  
  5. foreach($campos as $campo) {
  6.       if(isset($_GET['campo'])) {
  7.             $filtros[] = "$campo = '%$buscar%';
  8.      }
  9. }
  10.  
  11. $consulta = "SELECT * FROM tabla WHERE " . implode(' OR ', $filtros);
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: avanzado, buscador, formulario, select, sql, tabla, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:26.