Ir al contenido


Foto

Consulta like varios campos


  • Por favor identifícate para responder
3 respuestas en este tema

#1 Pili

Pili

    Member

  • Miembros
  • PipPip
  • 44 mensajes
  • LocationCiudad de México

Escrito 25 mayo 2014 - 05:48

Otra vez yo!  *-) que lata doy!

Estoy haciendo un buscador por palabra clave en varios campos.
¿hay una forma mejor de hacer la consulta que poniendo OR nombredelcampo LIKE para cada uno de los campos en los que quiero buscar ?
El principal problema es que ignora la primera condición (autoriza='1') y me arroja también los que tienen otro valor en el campo "autoriza"

¿que estoy haciendo mal?

De antemano mil gracias!

aqui está mi metodo (archivo clases)



delphi
  1. public function busca_prop_k($inicio, $rxpag )
  2. {
  3.  
  4. $sql="SELECT  * FROM propiedades
  5. where
  6. autoriza = '1'
  7. and
  8. titulo like '%".$_GET["key"]."%'
  9. or
  10. descripcion like '%".$_GET["key"]."%'
  11. or
  12. tipo like '%".$_GET["key"]."%'
  13. or
  14. tipo2 like '%".$_GET["key"]."%'
  15. or
  16. colonia like '%".$_GET["key"]."%'
  17. or
  18. otras like '%".$_GET["key"]."%'
  19. or
  20. comentarios like '%".$_GET["key"]."%'
  21. or
  22. keywords like '%".$_GET["key"]."%'
  23. order by id_propiedad desc limit $inicio, $rxpag";
  24. $res=mysql_query($sql,Conectar::con());
  25. while ($reg=mysql_fetch_assoc($res))
  26. echo $sql;
  27. {
  28. $this->propk[]=$reg;
  29. }
  30. return $this->propk;
  31.  
  32. }



  • 0

#2 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 25 mayo 2014 - 08:04

Como siempre respondiendo antes de entender bien el asunto. Pero, en fin.
¿no será por lo siguiente?:
el primer operador que es AND opera con el segundo solamente, esto dará una respuesta. Luego, a esta respuesta se le aplica toda esa seguidilla de ORs.
Quizá te convenga usar un paréntesis para encerrar todas las operaciones con OR (que en definitiva son una suma) dejando aislado al único AND (que es un producto), pues al menos dentro de un lenguaje de programación AND tiene un orden más alto de prioridad que OR (Tal como el producto y la suma, primero se efectúa el producto).
Espero que sea eso y puedas seguir adelante.
2*(2+2) <> 2*2+2

Saludos

  • 0

#3 Pili

Pili

    Member

  • Miembros
  • PipPip
  • 44 mensajes
  • LocationCiudad de México

Escrito 26 mayo 2014 - 03:57

Mil gracias cram... solucionaste mi problema  ;)
Saludos
  • 0

#4 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 27 mayo 2014 - 04:35

También podrías "sumar" todos los campos y hacer un solo LIKE, no sé si será más o menos rápido:



delphi
  1. SELECt * FROM propiedades
  2. WHERE (Autoriza = '1') AND
  3. (titulo||descripcion||tipo||tipo2||colonia||comentarios||keywords  LIKE '%".$_GET["key"]."%')
  4. ORDER BY id_propiedad DESC LIMIT $inicio, $rxpag


  • 0




IP.Board spam blocked by CleanTalk.