Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/07/2014, 08:41
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Multiples filtros dentro de una consulta

Muestranos cómo queda armada la query, y también procura validar la ejecución de la misma.
En tu script no estás verificando que haya resultados o errores:
Código PHP:
Ver original
  1. //consolido la consulta
  2. $sql_total = $sql.$sql_id_cliente.$sql_ttm.$sql_persona.$sql_estado.$sql_ordmot.$sql_repuestos.$sql_fecha;  
  3. // Verificar como está escrita.
  4. echo $sql_total;
  5. //verificar que no haya errores.
  6. $res=mysql_query($sql_total,$conex) or die("Error al ejecutar la consulta: ".mysql_error());
Nunca asumas que porque el PHP está bien escrito, has hecho lo mismo con SQL. El SQL es otro lenguaje con sus propias reglas.

A mi entender hay dos potenciales problemas:
1) No veo que estés separando correctamente los bloques que vas agregando, por lo que en algun momento el AND de uno puede salir pegado a otro elemento de la sentencia, genrando errores imperceptibles en el código.
Esto:
Código PHP:
Ver original
  1. "...
  2. AND orden.id_ordmot=ord_mot.id_ordmot";

junto con esto:

Código PHP:
Ver original
  1. if(isset($id_cliente) && $id_cliente != "")
  2. {
  3.     $sql_id_cliente ="AND orden.id_cliente='$id_cliente'";
  4. }
Generaría esto:
Código MySQL:
Ver original
  1. ...
  2. AND orden.id_ordmot=ord_mot.id_ordmotAND orden.id_cliente=...
¿notas cómo queda el AND?

2) No veo que estés formateando la fecha de un modo correcto. ASí como la planteas:
Código PHP:
Ver original
  1. if(isset($fhasta) && $fhasta != "")
  2.         {
  3.         $sql_fecha ="AND fecha BETWEEN '$fdesde' AND '$fhasta'";                          
  4.         }
podría suceder que ingrese con un formato incorrecto de fecha. DEbe respetar el estandar AAAA-MM-DD, que MySQL usa.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)