Ver Mensaje Individual
  #8 (permalink)  
Antiguo 01/08/2014, 16:55
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Buscador, si no hay nada entonces es todo

No había alcanzado a leer bien lo que escribiste, por lo que te puse una respuesta que ya había dado a otra persona en el pasado cuyo hilo tenía un título similar. No hay necesidad de hacer global a la variable que contiene la consulta, bastaba con definir la consulta general al inicio y en cada condición (los if), crear la condición que luego se añadiría a la consulta.

Código PHP:
Ver original
  1. $interno = $_POST['txt1'];
  2. $desde = strlen($_POST['txt2']) ? $_POST['txt2'] : '20000101';
  3. $hasta = strlen($_POST['txt3']) ? $_POST['txt3'] : date('Y,m,d');
  4. $consulta = 'SELECT * FROM tabla1 ';
  5. $condicion = '';
  6.  
  7. if (!strlen($interno))
  8.     $condicion = "WHERE fecha BETWEEN '{$desde}' AND '{$hasta}'";
  9. else if (!strlen($desde) and !strlen($hasta))
  10.     $condicion = "WHERE interno = {$interno}";
  11. else
  12.     $condicion = "WHERE interno = {$interno} AND (fecha BETWEEN '{$desde}' AND '{$hasta}')";
  13.  
  14. $consulta .= $condicion;
  15. $rst = mysql_query($consulta, $conexion);

Ojo, ten cuidado al momento de mezclar las condiciones de la fecha y el campo 'interno' pues en ambos casos usas el operador lógico AND, el cual puede ser malinterpretado al momento de ejecutar la consulta, es por esa razón que encierro entre paréntesis a la consulta de la fecha a fin de evitar conflictos lógicos. También ten cuidado con el formato con el que obtienes la fecha actual, quizá sea incompatible con el del campo 'fecha' en la tabla de tu BD. Y por último, te aconsejo mudarte a la extensión mejorada MySQLi pues MySQL está obsoleta a partir de PHP 5.5.0.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand