Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Reportes con filtros

Estas en el tema de Reportes con filtros en el foro de PHP en Foros del Web. Hola chicos, buenas tardes en México! Acudo a ustedes ya que tengo un problema que no he podido resolver. Trato de realizar reportes de movimientos, ...
  #1 (permalink)  
Antiguo 07/12/2014, 16:06
Avatar de i09120190  
Fecha de Ingreso: noviembre-2014
Mensajes: 19
Antigüedad: 9 años, 6 meses
Puntos: 0
Reportes con filtros

Hola chicos, buenas tardes en México!

Acudo a ustedes ya que tengo un problema que no he podido resolver.
Trato de realizar reportes de movimientos, para lo cual se solicitan 2 fechas al usuario y en seguida se muestran los movimientos que se realizaron durante ese rango de fechas seleccionadas, mi duda es que no se si estoy haciendo mal mi consulta o qué parte del código es la que estoy haciendo mal, ya que cada vez que presiono el botón de Filtrar solo me arroja los encabezados de la tabla pero no los registros.

El código que estoy usando es este:

Cita:
Código HTML:
<input type="date" name="fecha1" id="fecha1"/>
<input type="date" name="fecha2" id="fecha2"/>
<input type="submit" name="filtrar" value="Filtrar" id="filtrar" /> 
Código PHP:
<?php 
if(isset($_POST["filtrar"]) && ($_POST["fecha1"]!="") && ($_POST["fecha2"])!=""){
$objModelo->filtro(($_POST["fecha1"]),($_POST["fecha2"]));
}else{
echo 
"Eliga una fecha para filtrar.";; 

}
?>



Cita:
Código PHP:
function filtro($fecha1$fecha2){
$sql="SELECT * FROM tbl_movarticulo WHERE fechaMovimiento>=$fecha1 AND fechaMovimiento<=$fecha2";

$resul mysqli_query($this->conn$sql) or die(mysqli_error()); 


if(
$resul){
echo 
"<table align='center'><thead>

<th>Articulo</th>
<th>Movimiento</th>
<th>Cantidad</th>
<th>Departamento</th>
<th>Estado</th>
<th>Observaciones</th>
<th>Fecha</th>
</thead><tbody>"
;
while (
$row mysqli_fetch_array($resul)){ 
echo 
"<td align='center'>".$row["articulo"]."</td>";
echo 
"<td align='center'>".$row["movimiento"]."</td>";
echo 
"<td align='center'>".$row["cantidad"]."</td>";
echo 
"<td align='center'>".$row["departamento"]."</td>"
echo 
"<td align='center'>".$row["estado"]."</td>"
echo 
"<td align='center'>".$row["observaciones"]."</td>";
echo 
"<td align='center'>".$row["fechaMovimiento"]."</td>"



}else{
echo 
"No hay movimientos."

}
echo 
"</tbody></table>";

  #2 (permalink)  
Antiguo 07/12/2014, 17:54
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 7 meses
Puntos: 38
Respuesta: Reportes con filtros

Hola i09120190, por favor no dupliques post's, primero deberiamos saber que tipo de dato es el campo de fechas con el que trabajas, date , timestamp etc...
El asunto esque te falla la query podrias usar between :
Código PHP:
Ver original
  1. WHERE fecha-campo
  2.        BETWEEN '2011-05-01' AND '2011-05-31';
Y tambien tener en cuenta de tratar la fecha a formato americano, lo mas probable esque te esta fallando porque el formato de fecha que envias desde el form no sea igual
al tipo de dato de fecha en bd.
  #3 (permalink)  
Antiguo 07/12/2014, 17:59
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Reportes con filtros

Por qué no usas la sintaxis Beetwen?

Código PHP:
Ver original
  1. $sql="SELECT * FROM tbl_movarticulo WHERE fechaMovimiento BEETWEN $fecha1 AND  $fecha2";



de todos modos consulta el query en la consola de mysql o por interfaz? a ver que te trae
  #4 (permalink)  
Antiguo 07/12/2014, 18:09
Avatar de i09120190  
Fecha de Ingreso: noviembre-2014
Mensajes: 19
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Reportes con filtros

Hola chicos!
Gracias, por responder, aunque yo creo que ese no es el problema porque he estado usando BETWEEN también porque efectivamente también creí que ese era el problema, pero resulta que es lo mismo, no me arroja ningun registro, solo los encabezados de mi tabla.

:(
  #5 (permalink)  
Antiguo 07/12/2014, 18:11
Avatar de i09120190  
Fecha de Ingreso: noviembre-2014
Mensajes: 19
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Reportes con filtros

Cita:
Iniciado por Djoaq Ver Mensaje
Hola i09120190, por favor no dupliques post's, primero deberiamos saber que tipo de dato es el campo de fechas con el que trabajas, date , timestamp etc...
El asunto esque te falla la query podrias usar between :
Código PHP:
Ver original
  1. WHERE fecha-campo
  2.        BETWEEN '2011-05-01' AND '2011-05-31';
Y tambien tener en cuenta de tratar la fecha a formato americano, lo mas probable esque te esta fallando porque el formato de fecha que envias desde el form no sea igual
al tipo de dato de fecha en bd.
Comencé haciendo las pruebas indicando fechas especificas como lo haces tu, y así si obtengo resultados, pero al momento de cambiar por variables para que se filtre dinamicamente me resulta el caso que te planteo.
  #6 (permalink)  
Antiguo 07/12/2014, 18:13
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 7 meses
Puntos: 38
Respuesta: Reportes con filtros

Revisa el tipo de dato que envia el form y el de tu bd el problema esta ahí.
Pon una muestra de fecha y dinos como tienes configurado el tipo de dato del campo fechamovimiento en tu bd.
Un saludo.
  #7 (permalink)  
Antiguo 07/12/2014, 18:34
Avatar de i09120190  
Fecha de Ingreso: noviembre-2014
Mensajes: 19
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Reportes con filtros





Así es como tengo mi base de datos DJoaq

Existe un problema?
  #8 (permalink)  
Antiguo 07/12/2014, 18:45
Avatar de i09120190  
Fecha de Ingreso: noviembre-2014
Mensajes: 19
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Reportes con filtros

DJoaq tienes toda la razón, tengo que revisar el formato, ya que los dos son del mismo tipo de dato, pero en la BD se guardan en formato americano y mi datepicker esta en español, el formato es al revéz.
Muchas gracias! Lo intentaré de esa manera y te digo si me funcionar.
  #9 (permalink)  
Antiguo 07/12/2014, 18:54
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 7 meses
Puntos: 38
Respuesta: Reportes con filtros

Dale un vistazo a :
http://momentjs.com/docs/#/parsing/string-format/
  #10 (permalink)  
Antiguo 07/12/2014, 20:00
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Reportes con filtros

si bueno entonces seria una configuración del formato de la fecha y hora prueba con el DATE_FORMAT a ver si te funciona

incluso existe un post en el foro sobre el tema http://www.forosdelweb.com/f18/insertar-fecha-dd-mm-yyyy-php-mysql-545990/
  #11 (permalink)  
Antiguo 07/12/2014, 20:21
Avatar de i09120190  
Fecha de Ingreso: noviembre-2014
Mensajes: 19
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Reportes con filtros

Muy bien, ahora tengo que ese no es el detalle porque ahora hago que me imprima las fechas que selecciones y de igual manera me las imprime en el mismo formato de la base de datos (yyyy-mm-dd), y sigo con el mismo problema, no me imprime los registros entre esas fechas.
Creo que el error está en otro lado.
  #12 (permalink)  
Antiguo 07/12/2014, 21:57
Avatar de i09120190  
Fecha de Ingreso: noviembre-2014
Mensajes: 19
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Reportes con filtros

Listo chicos, el error estaba en la sentencia :D me faltaban algunas comillas, muchas gracias por su ayuda. :D

La sentencia quedo así:
Cita:
Código PHP:
$sql="SELECT * FROM tbl_movarticulo WHERE fechaMovimiento BETWEEN '"$fecha1."' AND '".$fecha2."'"

Saludos!

Etiquetas: fecha, filtros, mysql, registro, reportes, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:25.