Foros del Web » Programando para Internet » PHP »

¿Cómo poder hacer un filtro de busquedas con salida a excel?

Estas en el tema de ¿Cómo poder hacer un filtro de busquedas con salida a excel? en el foro de PHP en Foros del Web. hola a todos ! necesito una pequeña ayuda .. necesito hacer una especie de filtro con los siguentes valores .. desde "X" fecha hasta "X" ...
  #1 (permalink)  
Antiguo 21/09/2011, 13:52
 
Fecha de Ingreso: noviembre-2008
Mensajes: 13
Antigüedad: 15 años, 4 meses
Puntos: 0
¿Cómo poder hacer un filtro de busquedas con salida a excel?

hola a todos ! necesito una pequeña ayuda ..

necesito hacer una especie de filtro con los siguentes valores ..
desde "X" fecha hasta "X" fecha / nombre proveedor / codigo / codigo interior

ok me expliko la idea es que sea una especie de "dropdown" menu .. (el tipico menu que al hacer click despliega una lista) pero la idea es que esa lista que se muestre de cada una de las cosas dichas arriba .. sean sacadas desde la DB, para que ? .. para hacer una especie de filto .. osea poder buscar desde esta fecha .. hasta esta fecha y me va a mostrar todo los registros que salgan dentro de esa fecha .. (la fecha estan guardadas con el valor XX-XX-XXXX) y/o buscar por nombre de proveedor o codigo o codigo interior


la idea es que me arroje todo estos valores en un CSV es muy dificl .. ? .. de poder hacerme .. Me pueden ayudar ?? plzz plzz !!
  #2 (permalink)  
Antiguo 21/09/2011, 14:38
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: ¿Cómo poder hacer un filtro de busquedas con salida a excel?

Pues difícil será en función de tus conocimientos, y tu tu pregunta es demasiado general.

Primero te sugeriría lo siguiente:
1. Colocar campos donde leerás las fechas, a ser posible con calendario javascript para que la indiquen.
2. Para los valores provedor, código y código interior dependerá mucho de cuántos datos tengas en tu BD, si no son muchos distintos puedes hacer una consulta al estilo "select distinct proveedor" que te arrojará los proveedores que colocarás en un select, par que la persona elija, así igual con los códigos.
3. Si son muchas opciones, puedes poner un campo donde escribirán el término a buscar, aquí podrías usar alguna aplicación de sugerencia con ajax.
4. Una vez que tengas los campos, los envías a una consulta que tome los datos de los filtros, y generas el archivo. El formato csv es muy fácil de implementar, no requiere grandes cosas.
  #3 (permalink)  
Antiguo 21/09/2011, 14:46
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: ¿Cómo poder hacer un filtro de busquedas con salida a excel?

hilas para el tema de los calendarios puedes usar jquery date picker es bastante bueno
http://jqueryui.com/demos/datepicker/ , con respecto a la exportacion a excel lo puedes hacer de la siguiente forma ,

Código PHP:
Ver original
  1. <?php
  2.  
  3. header('Pragma: public');
  4. header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past    
  5. header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
  6. header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
  7. header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
  8. header('Pragma: no-cache');
  9. header('Expires: 0');
  10. header('Content-Transfer-Encoding: none');
  11. header('Content-Type: application/vnd.ms-excel'); // This should work for IE & Opera
  12. header('Content-type: application/x-msexcel'); // This should work for the rest
  13. header('Content-Disposition: attachment; filename="Informe.xls"'); 
  14.  
  15.     echo "<table xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel'     xmlns='http://www.w3.org/TR/REC-html40'>
  16.  
  17.             <tr>
  18.                 <td>dato</td>
  19. </tr>";
  20. ?>

saludos
  #4 (permalink)  
Antiguo 21/09/2011, 14:54
 
Fecha de Ingreso: noviembre-2008
Mensajes: 13
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: ¿Cómo poder hacer un filtro de busquedas con salida a excel?

Cita:
Iniciado por ocp001a Ver Mensaje
Pues difícil será en función de tus conocimientos, y tu tu pregunta es demasiado general.

Primero te sugeriría lo siguiente:
1. Colocar campos donde leerás las fechas, a ser posible con calendario javascript para que la indiquen.
2. Para los valores provedor, código y código interior dependerá mucho de cuántos datos tengas en tu BD, si no son muchos distintos puedes hacer una consulta al estilo "select distinct proveedor" que te arrojará los proveedores que colocarás en un select, par que la persona elija, así igual con los códigos.
3. Si son muchas opciones, puedes poner un campo donde escribirán el término a buscar, aquí podrías usar alguna aplicación de sugerencia con ajax.
4. Una vez que tengas los campos, los envías a una consulta que tome los datos de los filtros, y generas el archivo. El formato csv es muy fácil de implementar, no requiere grandes cosas.

ya perfect algo me esta quedando claro, realmente no tenog nada y estoy haciedno esto con muy poco conocimiento de verdad .. pero algo lograré me tengo fe :`) tengo el nombre de la tabla tengo los nombres de las columnas .. lo que no se hacer es el funcionar toda la cosa xD osea no se nada xD pero entendi lo que me quisite decir y estan es lo claro por ejemplo el campo "proveedor" tiene alrrededor de 20 tipos de nombres distintos obivamente algunos se repiten .. y la idea en ese "sector" es hacerlo como lo hace los filtros de excel .. que te muestra los campos que se encuentra dentro de la columna y te hace seleccionar 1 para que te muestre todo lo que tenga como por ejemplo "cocacola" .. lo selecciono y te meustra cocacola .. el tema es "como hacerlo?" XD
creo que estoy pidiendo mucho cierto ?


Cita:
Iniciado por matt_1985 Ver Mensaje
hilas para el tema de los calendarios puedes usar jquery date picker es bastante bueno
[url]http://jqueryui.com/demos/datepicker/[/url] , con respecto a la exportacion a excel lo puedes hacer de la siguiente forma ,

Código PHP:
Ver original
  1. <?php
  2.  
  3. header('Pragma: public');
  4. header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past    
  5. header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
  6. header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
  7. header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
  8. header('Pragma: no-cache');
  9. header('Expires: 0');
  10. header('Content-Transfer-Encoding: none');
  11. header('Content-Type: application/vnd.ms-excel'); // This should work for IE & Opera
  12. header('Content-type: application/x-msexcel'); // This should work for the rest
  13. header('Content-Disposition: attachment; filename="Informe.xls"'); 
  14.  
  15.     echo "<table xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel'     xmlns='http://www.w3.org/TR/REC-html40'>
  16.  
  17.             <tr>
  18.                 <td>dato</td>
  19. </tr>";
  20. ?>

saludos
Gracias por la ayuda .. exactamente eso quiero hacer (si puedes ver la cita de arriba verás en la pocicion que estoy xD) no se nada pero entiendo lo que me ayudan y lo que me dicen .. pero exactamente es eso lo que necesito pero elegir 2 fechas .. (desde que fecha hasta que fecha)
  #5 (permalink)  
Antiguo 21/09/2011, 15:06
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: ¿Cómo poder hacer un filtro de busquedas con salida a excel?

los dos campos de las fechas te quedarian algo como asi

Código HTML:
Ver original
  1. <div style="width:90%">
  2. <form action="<?php $_SERVER['PHP_SELF'];?>" method="POST">
  3. Desde: <input name="fecha1" id="calendario" class="fechas">
  4. Hasta: <input name="fecha2" id="calendario2" class="fechas">
  5. <input type="submit" name="buscador" value="Buscar" class="buscar">
  6. </form>
  7. </div>
  8. <br />
  9. <table style="width:90%; height:30px; border-width:3px" bgcolor="#cbdfef">
  10.     <tr>
  11.         <td width="20%"><strong>Proveedor</strong></td>
  12.     </tr>

luego el codigo del buscador

Código PHP:
Ver original
  1. if ($_POST['buscador']){
  2. $fecha_inicio  = $_POST['fecha1'];
  3. $fecha_termino = $_POST['fecha2'];
  4.  
  5. if (empty($fecha_inicio ) || empty($fecha_termino)) {
  6.  
  7.     echo " <br> No se han ingresado datos a Buscar";
  8. }
  9.  
  10.    
  11. else{
  12.      
  13.     $con=mysql_connect("localhost","xxx","xxx");
  14.     $sql = "SELECT
  15.                
  16.             FROM tabla WHERE fecha BETWEEN '".$fecha_inicio."' AND '".$fecha_termino."'";
  17.            
  18.     mysql_select_db("nombre base datos ", $con);
  19.  
  20.     $result = mysql_query($sql, $con);
  21.     $total = mysql_num_rows($result);
  22.         if ($row = mysql_fetch_array($result)){
  23.             do {   
  24.                     $proveedor=$row['proveedor'];
  25.  
  26.                 echo "<table>
  27.                         <tr>
  28.                             <td width=20%>$proveedor</td>
  29.                        
  30.                     </table>";
  31.  
  32.                 }  
  33.    
  34.             while ($row = mysql_fetch_array($result));
  35.            
  36.                 if (!empty($fecha_inicio ) || !empty($fecha_termino) || !empty($total)) {
  37.      
  38.                         echo "<br><a href='exportar_excel.php?fecha1=".$fecha_inicio."&fecha2=".$fecha_termino."'>Exportar los Datos <img src='../imagenes/icono_excel.jpg'></a>";
  39.                        
  40.                         }
  41.  
  42.         }
  43. else {  echo " <br> No se encontraron resultados para: <b>$fecha_inicio y $fecha_termino</b>"; }
  44.  
  45.     }
  46. }

esa es mas o menos la idea , dentro de los campos de texto se te desplegaran dos calendarios con lo que te dije anteriormente del datepicker lee la documentacion del link ,
y luego llamar el archivo que exportas a excel en este caso yo lo hice a traves de $_GET el parametro que estoy pasando .

Saludos
  #6 (permalink)  
Antiguo 21/09/2011, 15:08
 
Fecha de Ingreso: noviembre-2008
Mensajes: 13
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: ¿Cómo poder hacer un filtro de busquedas con salida a excel?

Cita:
Iniciado por matt_1985 Ver Mensaje
los dos campos de las fechas te quedarian algo como asi

Código HTML:
Ver original
  1. <div style="width:90%">
  2. <form action="<?php $_SERVER['PHP_SELF'];?>" method="POST">
  3. Desde: <input name="fecha1" id="calendario" class="fechas">
  4. Hasta: <input name="fecha2" id="calendario2" class="fechas">
  5. <input type="submit" name="buscador" value="Buscar" class="buscar">
  6. </form>
  7. </div>
  8. <br />
  9. <table style="width:90%; height:30px; border-width:3px" bgcolor="#cbdfef">
  10.     <tr>
  11.         <td width="20%"><strong>Proveedor</strong></td>
  12.     </tr>

luego el codigo del buscador

Código PHP:
Ver original
  1. if ($_POST['buscador']){
  2. $fecha_inicio  = $_POST['fecha1'];
  3. $fecha_termino = $_POST['fecha2'];
  4.  
  5. if (empty($fecha_inicio ) || empty($fecha_termino)) {
  6.  
  7.     echo " <br> No se han ingresado datos a Buscar";
  8. }
  9.  
  10.    
  11. else{
  12.      
  13.     $con=mysql_connect("localhost","xxx","xxx");
  14.     $sql = "SELECT
  15.                
  16.             FROM tabla WHERE fecha BETWEEN '".$fecha_inicio."' AND '".$fecha_termino."'";
  17.            
  18.     mysql_select_db("nombre base datos ", $con);
  19.  
  20.     $result = mysql_query($sql, $con);
  21.     $total = mysql_num_rows($result);
  22.         if ($row = mysql_fetch_array($result)){
  23.             do {   
  24.                     $proveedor=$row['proveedor'];
  25.  
  26.                 echo "<table>
  27.                         <tr>
  28.                             <td width=20%>$proveedor</td>
  29.                        
  30.                     </table>";
  31.  
  32.                 }  
  33.    
  34.             while ($row = mysql_fetch_array($result));
  35.            
  36.                 if (!empty($fecha_inicio ) || !empty($fecha_termino) || !empty($total)) {
  37.      
  38.                         echo "<br><a href='exportar_excel.php?fecha1=".$fecha_inicio."&fecha2=".$fecha_termino."'>Exportar los Datos <img src='../imagenes/icono_excel.jpg'></a>";
  39.                        
  40.                         }
  41.  
  42.         }
  43. else {  echo " <br> No se encontraron resultados para: <b>$fecha_inicio y $fecha_termino</b>"; }
  44.  
  45.     }
  46. }

esa es mas o menos la idea , dentro de los campos de texto se te desplegaran dos calendarios con lo que te dije anteriormente del datepicker lee la documentacion del link ,
y luego llamar el archivo que exportas a excel en este caso yo lo hice a traves de $_GET el parametro que estoy pasando .

Saludos

aa ok ok ok okok creo que con esto comenzare a aavanzar bastante .. muchas gracias por la ayuda vere que mas peudo hacer para terminar el trabajiito ! Gracias !!
  #7 (permalink)  
Antiguo 21/09/2011, 15:24
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: ¿Cómo poder hacer un filtro de busquedas con salida a excel?

El usar filtros tipo excel se implementa con la instrucción select distinct, como te mencionaba.

A modo de ejemplo:
Código PHP:
Ver original
  1. $provedores=mysql_query("select distinct provedor from mi tabla");
  2. while($prov=mysql_fetch_array($provedores))
  3.         $lprov.="<option value=\"$prov[provedor]\">$prov[provedor]</option>";

Así tendrías un select con los distintos provedores (sin repetirse) el cual podrían elegir y así filtrar.

Código PHP:
Ver original
  1. echo "
  2. <label>Indique proveedor</label>
  3. <select name=\"provedor\">
  4.        $lprov
  5. </select>
  6. ";

Etiquetas: busquedas, poder, registro, salida, filtros
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 18:59.