Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/03/2013, 12:53
ocp001a
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Duda para generar reportes

Pues no veo mal crear la condición por separado de la ejecución de la consulta, lo que creo que trabajas de más es a la hora d e formar la condición, al tratar de concatenarla y al evaluar si existen los parámetros:

Código PHP:
Ver original
  1. if(isset($k['desde']) && $k['desde'] != "" && isset($k['hasta']) && $k['hasta'] != ""):
  2.             $where.=($inicio)?" WHERE f.fecha BETWEEN'".$k['desde']."' AND '".$k['hasta']."'" : "AND f.fecha BETWEEN'".$k['desde']."' AND '".$k['hasta']."'";
  3.             $inicio = false;  
  4.         endif;


Código PHP:
Ver original
  1. if(!empty($k['desde'])  && !empty ($k['hasta'])):
  2.               $where[]="f.fecha BETWEEN'".$k['desde']."' AND '".$k['hasta'];
al final, la variable $where la juntas con implode

Código PHP:
Ver original
  1. $where='WHERE '.implode(' AND ',$where);

Y sólo habría que tratar el group by de forma independiente para que no lleve el and.

Las diferencias: empty verifica si la variable existe y está o no vacía, con lo que no necesitas comparar dos veces

Y finalmente, en vez de preguntar si la variable $where ya contiene algo, vas almacenando en un arreglo los segmentos de la consulta para al final unirlo con AND entre cada segmento.