Foros del Web » Programando para Internet » PHP »

Error en while solo muestra un registro

Estas en el tema de Error en while solo muestra un registro en el foro de PHP en Foros del Web. Hola a todos estoy haciendo un Excel desde PHP usando la libreria PHPExel tengo el siguiente código el cual genera el archivo Código PHP: <?php ...
  #1 (permalink)  
Antiguo 05/06/2013, 17:14
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Error en while solo muestra un registro

Hola a todos estoy haciendo un Excel desde PHP usando la libreria PHPExel
tengo el siguiente código el cual genera el archivo
Código PHP:
<?php
require_once('DocExcel/Classes/PHPExcel.php');
require_once(
'Connections/connection.php');
// Crea un nuevo objeto PHPExcel


$objPHPExcel = new PHPExcel();


// los registros de la base de datos mysql
mysql_select_db($database_connection$connection);
$query_licenciaturas "SELECT * FROM clientes";
$licenciaturas mysql_query($query_licenciaturas$connection);


if(!
$licenciaturas//Comprobamos si hay errores
die("Error MySQL de Extracción de Datos");
while(
$fila mysql_fetch_array($licenciaturas))
{
$objPHPExcel->getActiveSheet()->setCellValue("A1".$i$fila['Nombre']);
$objPHPExcel->getActiveSheet()->setCellValue("B1".$i$fila['ApellidoPaterno']);

}
// Renombrar Hoja
$objPHPExcel->getActiveSheet()->setTitle('Clientes');

// 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="P.xlsx"');
header('Cache-Control: max-age=0');
$objWriter PHPExcel_IOFactory::createWriter($objPHPExcel'Excel2007');
$objWriter->save('php://output');
exit;
?>
hasta aca bien pero solo me devuelve un registro auqnue existan más :/
Gracias de antemano
  #2 (permalink)  
Antiguo 05/06/2013, 17:58
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Error en while solo muestra un registro

Código PHP:
Ver original
  1. // Falta inicializar $i
  2. $i = 1;
  3. while($fila = mysql_fetch_array($licenciaturas)) {
  4.       // Tienes "A1" . $i
  5.       // Debería ser "A$i"
  6.       $objPHPExcel->getActiveSheet()->setCellValue("A$i", $fila['Nombre']);
  7.       $objPHPExcel->getActiveSheet()->setCellValue("B$i", $fila['ApellidoPaterno']);
  8.       // Hay que incrementar $i
  9.       $i++;
  10. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 05/06/2013, 18:00
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Error en while solo muestra un registro

Cita:
Iniciado por Triby Ver Mensaje
Código PHP:
Ver original
  1. // Falta inicializar $i
  2. $i = 1;
  3. while($fila = mysql_fetch_array($licenciaturas)) {
  4.       // Tienes "A1" . $i
  5.       // Debería ser "A$i"
  6.       $objPHPExcel->getActiveSheet()->setCellValue("A$i", $fila['Nombre']);
  7.       $objPHPExcel->getActiveSheet()->setCellValue("B$i", $fila['ApellidoPaterno']);
  8.       // Hay que incrementar $i
  9.       $i++;
  10. }
Lo hice asi pero solo bajo mi registro y no muestra los demás aún asii :(
  #4 (permalink)  
Antiguo 05/06/2013, 18:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Error en while solo muestra un registro

Entonces sigues con información sólo en A1 y B1?

Intenta:
a) Imprimir la consulta y ejecutarla en PhpMyAdmin... cuántos registros muestra?
b) Haciendo echo de los datos en vez de agregarlos al archivo de Excel... hay alguna diferencia?
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 05/06/2013, 18:05
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Error en while solo muestra un registro

Perdon se me había pasado el incremento xD
Funciona perfecto GRACIAS MIL
  #6 (permalink)  
Antiguo 05/06/2013, 18:10
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Error en while solo muestra un registro

Triby no sabes como ponerle nombre a la columna por ejemplo donde muestra el nombre que en A1 salga NOMBRE.....
  #7 (permalink)  
Antiguo 05/06/2013, 18:31
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Error en while solo muestra un registro

Antes del While asigna en A1 "Nombre" y en B1 "Apellido Paterno", inicializas $i en 2 y voilà!
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 05/06/2013, 18:38
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Error en while solo muestra un registro

Cita:
Iniciado por Triby Ver Mensaje
Antes del While asigna en A1 "Nombre" y en B1 "Apellido Paterno", inicializas $i en 2 y voilà!
Pra asignarle a A1 tengo que usar el setCellValue???
porque lo puse así pero nada
$i = 1;
$A1='NOMBRE';
while
  #9 (permalink)  
Antiguo 05/06/2013, 23:04
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Error en while solo muestra un registro

No, debe ser más o menos así:

Código PHP:
Ver original
  1. // Antes del while!!!
  2. $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Nombre');
  3. $objPHPExcel->getActiveSheet()->setCellValue('B1', 'Apellido Paterno');
  4.  
  5. $i = 2;
  6. while(/* lectura de tu consulta */) {
  7.      // Aquí asignas cada nombre y apellido
  8.      // en las celdas correspondientes
  9.      // Y, finalmente, incrementas $i
  10. }
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 06/06/2013, 09:34
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Error en while solo muestra un registro

Gracias
Código PHP:
TRIBY 
ANDA PERFECTO!!!
ahora etsoy tratando de insertar una imagen con este codigo que encontre por ahí
Código PHP:
$gdImage imagecreatefromjpeg('images/officelogo.jpg');
// Add a drawing to the worksheetecho date('H:i:s') . " Add a drawing to the worksheet\n";
$objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
$objDrawing->setName('Sample image');$objDrawing->setDescription('Sample image');
$objDrawing->setImageResource($gdImage);
$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG);
$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
$objDrawing->setHeight(150);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
$objWriter PHPExcel_IOFactory::createWriter($objPHPExcel'Excel2007');$objWriter->save(str_replace('.php''.xlsx'__FILE__)); 
Pero aún no lo consigo
  #11 (permalink)  
Antiguo 06/06/2013, 16:00
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Error en while solo muestra un registro

Ya tengo mi archivo y funciona BIEN pero solo en LOCAL cuando lo pruebo en el servidor me sale el mensaje Excel no puede abrir el archivo porque el formato o la extensión de éste no son válidos.....

Alguein sabe porque en Local funciona y en el servidor no????

Última edición por Briss; 06/06/2013 a las 16:49
  #12 (permalink)  
Antiguo 06/06/2013, 16:55
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Error en while solo muestra un registro

Código PHP:
require_once('DocExcel/Classes/PHPExcel.php');
require_once(
'Connections/connection.php');
// Crea un nuevo objeto PHPExcel


$objPHPExcel = new PHPExcel();


          
     
$objDrawing = new PHPExcel_Worksheet_Drawing();
        
$objDrawing->setName('NQCL');
        
$objDrawing->setDescription('The Image that I am inserting');
        
$objDrawing->setPath('img/logo.jpg');
        
$objDrawing->setCoordinates('A1');
        
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
        
$objWriter PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');
          



//raemos los registros de la base de datos mysql
mysql_select_db($database_connection$connection);
$query_licenciaturas "SELECT * FROM  alumnos";
$licenciaturas mysql_query($query_licenciaturas$connection);


if(!
$licenciaturas//Comprobamos si hay errores
die("Error MySQL de Extracción de Datos");
$objPHPExcel->getActiveSheet()->setCellValue('A7''Nombre');
$objPHPExcel->getActiveSheet()->setCellValue('B7''Apellido Paterno');

$i 8;

while(
$fila mysql_fetch_array($licenciaturas))
{
$objPHPExcel->getActiveSheet()->setCellValue("A$i"$fila['Nombre']);
$objPHPExcel->getActiveSheet()->setCellValue("B$i"$fila['ApellidoPaterno']);

$i++;
}


// Renombrar Hoja
$objPHPExcel->getActiveSheet()->setTitle('Alumnos');

// 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="AlumnosP.xlsx"');
header('Cache-Control: max-age=0');
$objWriter PHPExcel_IOFactory::createWriter($objPHPExcel'Excel2007');
$objWriter->save('php://output');
exit;
?>printf("ERROR, accion no encontrada\n\n");

Ese es mi código funicon en local pero cuando lo pruebo en mi servidor aparece el mensaje... Excel no puede abrir el archivo '.xlsx' porque el formato o extensión no son válidod. Compruebe que el archivo...

Etiquetas: muestra, mysql, registro, select
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 17:53.