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//consolido la consulta
$sql_total = $sql.$sql_id_cliente.$sql_ttm.$sql_persona.$sql_estado.$sql_ordmot.$sql_repuestos.$sql_fecha;
// Verificar como está escrita.
echo $sql_total;
//verificar que no haya errores.
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"...
AND orden.id_ordmot=ord_mot.id_ordmot";
junto con esto:
Código PHP:
Ver originalif(isset($id_cliente) && $id_cliente != "") {
$sql_id_cliente ="AND orden.id_cliente='$id_cliente'";
}
Generaría esto:
Código MySQL:
Ver original...
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 originalif(isset($fhasta) && $fhasta != "") {
$sql_fecha ="AND fecha BETWEEN '$fdesde' AND '$fhasta'";
}
podría suceder que ingrese con un formato incorrecto de fecha. DEbe respetar el estandar AAAA-MM-DD, que MySQL usa.