Foros del Web » Programando para Internet » PHP »

Incidencia en la generación de excel

Estas en el tema de Incidencia en la generación de excel en el foro de PHP en Foros del Web. Muy buenas y saludos a todos. Tengo un problema usando phpexcel y es que si un usuario genera un excel y cierra su sesión, el ...
  #1 (permalink)  
Antiguo 25/09/2014, 04:36
 
Fecha de Ingreso: septiembre-2014
Mensajes: 3
Antigüedad: 9 años, 7 meses
Puntos: 0
Incidencia en la generación de excel

Muy buenas y saludos a todos.

Tengo un problema usando phpexcel y es que si un usuario genera un excel y cierra su sesión, el siguiente que se conecta a esa página recibe el mismo informe con los datos del anterior usuario. Si vuelve a cargar la página si es cierto que descarga correctamente, pero por motivos obvios quisiera saber que hago mal para evitar este tipo de incidencias.

Gracias.

Código PHP:
<?php

include("import.php");
include(
"funciones.php");

$usuario=getJoomUser();

if (
$usuario['id']== 0){
    print 
"No estas logueado en el sistema";
    
$pantalla=$usuario['username'];
    print 
"$pantalla";
}
else{
    
$input = new jinput;
    
$username=$usuario['username'];
    
$tablaS$usuario['username'].'s';
    
$tablaD$usuario['username'].'d';
    
$link mysql_connect(datos conexion);
    
$dbSelected mysql_select_db(datos conexion,$link);
    if (
$dbSelected
        
$result=mysql_query("SELECT j.sfid, c.name FROM jerarquias j, Centros c WHERE j.cad='$username' AND j.sfid=c.sfid" );
    
    
$result2=mysql_query("SELECT ean, description FROM terminales ORDER BY 2");
  
    require_once (
'Classes/PHPExcel.php');
    
/** PHPExcel_Writer_Excel2007 */
    // Crea un nuevo objeto PHPExcel
    
$objPHPExcel = new PHPExcel();
    
    
// Establecer propiedades
    
$objPHPExcel->getProperties()
    ->
setCreator("Usuario")
    ->
setLastModifiedBy("Usuario")
    ->
setTitle("Listado de Stock")
    ->
setSubject("Listado de Stock")
    ->
setDescription("stock")
    ->
setKeywords("Excel Office 2003 openxml php");
    
//->setCategory("Pruebas de Excel");
//      }
    
$c=0;
   
   while (
$record=mysql_fetch_row($result)){
          
$matrizCentros[$c][0]=$record[0];//guardo sfid
          
$nuevaTabla=strtolower($record[0].'s');
          
$result4=mysql_query("CREATE TABLE $nuevaTabla LIKE e2901034s");
          
$nuevaTabla=strtolower($record[0].'d');
          
$result4=mysql_query("CREATE TABLE $nuevaTabla LIKE e2901034d");
          
$nuevaTabla=strtolower($record[0].'e');
          
$result4=mysql_query("CREATE TABLE $nuevaTabla LIKE e2901034e");
          
$matrizCentros[$c][1]=$record[1];//guardo nombre
          
          
++$c;
           
      }
 
    
$c=0;
    
//While para rellenar todos los terminales de la tabla terminales
    
while ($record2=mysql_fetch_row($result2)){
        
//echo 'entra';
        
$matrizEans[$c][0]=$record2[0];//guardo ean
        //echo $record[0];
        
$matrizEans[$c][1]=$record2[1];//guardo descripción
        
$objPHPExcel->setActiveSheetIndex(0)
                ->
setCellValueByColumnAndRow(0,$c+2,$record2[1]); //Grabo en excel las descripciones de los terminales
        
++$c;   
    }

   
$centros=count($matrizCentros);
   for (
$i=0;$i<$centros;$i++){
          
$tabla=strtolower($matrizCentros[$i][0].'s');
          
$objPHPExcel->setActiveSheetIndex(0)
                  ->
setCellValueByColumnAndRow($i+1,1,$matrizCentros[$i][1]); 
          
$result3=mysql_query("SELECT count(*), ean FROM $tabla GROUP BY ean");//guardo las cantidades de cada terminal que tenemos en stock en el centro
          
$c=0;
          while (
$record3=mysql_fetch_row($result3)){
                  
$matrizStock[$c][0]=$record3[0];//guardo cantidad
                  
$matrizStock[$c][1]=$record3[1];//ean
                  
++$c;
          }
              
//++$c;   
              
$eans=count($matrizEans)+1;
              
$stock=count($matrizStock);                
              for (
$h=0$h<$eans;$h++){
                  for (
$j=0;$j<$stock;$j++){                  
                      if (
$matrizEans[$h][0]===$matrizStock[$j][1]){
                          
$objPHPExcel->setActiveSheetIndex(0)
                          ->
setCellValueByColumnAndRow($i+1,$h+2,$matrizStock[$j][0]);
                          break;    
                      }
                  }
              }
          unset(
$matrizStock);
          
//$c=count($matrizEans);
      
}
    
//Autoajustamos tamaño de las columnas
    
$nCols $centros//set the number of columns

    
foreach (range(0$nCols) as $col) {
        
$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn($col)->setAutoSize(true);                
    }
    
// Renombrar Hoja
    
$objPHPExcel->getActiveSheet()->setTitle('Listado Stock Cad');
    
    
// Establecer la hoja activa, para que cuando se abra el documento se muestre primero.
    
$objPHPExcel->setActiveSheetIndex(0);
    
    
// Se modifican los encabezados del HTTP para indicar que se envia un archivo de Excel.
    
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    
header('Content-Disposition: attachment;filename="Listado de Stock Cad.xls"');
    
header('Cache-Control: max-age=0');
    
$objWriter PHPExcel_IOFactory::createWriter($objPHPExcel'Excel5');
    
$objWriter->save('php://output');
    exit;
}   
?>
  #2 (permalink)  
Antiguo 25/09/2014, 08:56
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Incidencia en la generación de excel

Nunca he utilixado PHP excel pero me parece que el problema no se deriva en eso sino en las variables, es decir:

Código PHP:
$username=$usuario['username']; 
Como en tu función no nos muestras como estas obteniendo este usuario deberias rastrear como lo generas, es posible que no estes cerrando correctamente la sesión y el sistema esta reteniendo el ultimo usuario inscrito y no este tomando el usuario nuevo, imprime este valor y le vas haciendo el seguimiento, creo que eso se puede hacer así.
__________________
Blog de humor http://elcuasatar.net63.net/
  #3 (permalink)  
Antiguo 27/09/2014, 00:56
 
Fecha de Ingreso: septiembre-2014
Mensajes: 3
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Incidencia en la generación de excel

Cita:
Iniciado por cuasatar Ver Mensaje
Nunca he utilixado PHP excel pero me parece que el problema no se deriva en eso sino en las variables, es decir:

Código PHP:
$username=$usuario['username']; 
Como en tu función no nos muestras como estas obteniendo este usuario deberias rastrear como lo generas, es posible que no estes cerrando correctamente la sesión y el sistema esta reteniendo el ultimo usuario inscrito y no este tomando el usuario nuevo, imprime este valor y le vas haciendo el seguimiento, creo que eso se puede hacer así.
Muchas gracias cuasatar. Creo que los tiros van por ahí. Es más, creo que me has dado una idea de por donde pueden ir los tiros en otro problema que tengo que cuento muy resumido: Trabajo con Joomla y muchas páginas embebidas con código propio en php y en ocasiones es necesario que un usuario borre historial, cookies y demás porque no reconoce bien la sesión en mi función en php. Es decir, joomla si carga correctamente la sesión pero mi código hay veces que dice que no hay sesión iniciada y no permite cargar los datos ya que como condición para ello pongo que el usuario este logado.

Miro lo que me has comentado y comento por si sirve de ayuda a alguien más.
  #4 (permalink)  
Antiguo 14/10/2014, 22:22
 
Fecha de Ingreso: septiembre-2014
Mensajes: 3
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Incidencia en la generación de excel

Tras revisar el código no doy con la solución.

Muchas gracias por la ayuda. En vez de lanzar directamente el .php que genera el excel crearé un opcional a ver que tal.

Etiquetas: excel, mysql, 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 14:42.