Ir al contenido


Foto

Busqueda con multiples filtros


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

#1 manuel001

manuel001

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 20 julio 2014 - 05:05

Buen dia señores, otra ves acudo a ustedes.

Estoy haciendo una busqueda con multiples filtros, estos filtros son variables enviadas desde un formulario via POST, el usuario puede usar uno, dos o los que quiera para filtrar la informacion buscada, entonces la consulta tendria que tomar solo esas variables.

Ahi les muestro el codigo, auque ahora sin resultado.

Quiza lo estoy planteando mal, por eso acudo a su experiencia, desde ya muchas gracias.



php
  1. <?php
  2. ...
  3. //capturo las variables enviadas desde el formulario via POST
  4. $fdesde=$_POST["fdesde"];
  5. $fhasta=$_POST["fhasta"];
  6. $id_cliente=$_POST["id_cliente"];
  7. $id_ttm=$_POST["id_ttm"];
  8. $id_persona=$_POST["id_persona"];
  9. $id_ordmot=$_POST["id_ordmot"];
  10. $id_estado=$_POST["id_estado"];
  11. $repuestos=$_POST["repuestos"];
  12.  
  13. //relaciono las tablas donde estan los campos a buscar y mostrar
  14. $sql="SELECT *
  15. FROM orden,cliente,ttm,persona,estado,ord_mot
  16. WHERE orden.id_cliente=cliente.id_cliente
  17. AND orden.id_ttm=ttm.id_ttm
  18. AND ttm.id_estado=estado.id_estado
  19. AND orden.id_persona=persona.id_persona
  20. AND orden.id_ordmot=ord_mot.id_ordmot";
  21.  
  22. //filtro las variables que estan definidas y no estan vacias para incrustarlo en la consulta SQL
  23. if(isset($id_cliente) && $id_cliente != "")
  24. {
  25. $sql_id_cliente ="AND orden.id_cliente='$id_cliente'";
  26. }
  27. if(isset($id_ttm) && $id_ttm != "")
  28. {
  29. $sql_ttm ="AND orden.id_ttm='$id_ttm'";
  30. }
  31. if(isset($id_persona) && $id_persona  != "")
  32. {
  33. $sql_persona ="AND orden.id_persona='$id_persona'";
  34. }
  35. if(isset($id_estado) && $id_estado != "")
  36. {
  37. $sql_estado="AND ttm.id_estado='$id_estado'";
  38. }
  39. if(isset($id_ordmot) && $id_ordmot != "")
  40. {
  41. $sql_ordmot="AND orden.id_ordmot='$id_ordmot'";
  42. }
  43. if(isset($repuestos) && $repuestos != "")
  44. {
  45. $sql_repuestos ="AND orden.repuestos='$repuestos'";
  46. }
  47. if(isset($fdesde) && $fdesde != "")
  48. {
  49. if(isset($fhasta) && $fhasta != "")
  50. {
  51. $sql_fecha ="AND fecha BETWEEN '$fdesde' AND '$fhasta'";
  52. }
  53. }
  54.  
  55. //consolido la consulta
  56. $sql_total = $sql.$sql_id_cliente.$sql_ttm.$sql_persona.$sql_estado.$sql_ordmot.$sql_repuestos.$sql_fecha; 
  57. $res=mysql_query($sql_total,$conex);
  58. ...
  59. ?>
  60. [/php]


  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 20 julio 2014 - 05:10

manuel001 he editado tu mensaje para añadirle al código php la etiqueta correspondiente para que se visualice bien.
Recuerda que puedes hacerlo de dos formas:

[nobbc]


php
  1. Tu código aquí


[/nobbc]

[nobbc]

Tu código aquí

[/nobbc]

Por favor utiliza las etiquetas.

Saludos,
  • 0

#3 manuel001

manuel001

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 21 julio 2014 - 10:52

Bueno gracias. Ya solucione mi problema.

El problema era que los AND me imprimían pegados, y tuve que formatear la fecha.

Saludos.

  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 21 julio 2014 - 11:00

Un Consejo con los IF, cuando son muchos IF mejor utiliza if..elseif:



php
  1. if (algo)
  2. //algo
  3. elseif (algo)
  4. //algo
  5. elseif (algo)
  6. //algo
  7. else //algo final



Saludos.
  • 0




IP.Board spam blocked by CleanTalk.