Question

The code I currently have:

<?php

  /** PHPExcel */
  require_once '../Classes/PHPExcel.php';

  /** PHPExcel_IOFactory */
  require_once '../Classes/PHPExcel/IOFactory.php';

  // Create new PHPExcel object
  $objPHPExcel = new PHPExcel();

  // Set properties
  $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
                               ->setLastModifiedBy("Maarten Balliauw")
                               ->setTitle("Office 2007 XLSX Test Document")
                               ->setSubject("Office 2007 XLSX Test Document")
                               ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
                               ->setKeywords("office 2007 openxml php")
                               ->setCategory("Test result file");

  $result = 'select * from table1';

  for($i=0;$i<count($result);$i++) {

    $result1 = 'select * from table2 where table1_id = ' . $result[$i]['table1_id'];

    for ($j=0;$j<count($result1);$j++) {
      $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A' . $j, $result1[$j]['name']);
    }

    // Set active sheet index to the first sheet, so Excel opens this as the first sheet
    $objPHPExcel->setActiveSheetIndex(0);

    // Save Excel 2007 file
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    $objWriter->save(str_replace('.php', '.xlsx', __FILE__));

    // Echo done
    echo date('H:i:s') . " Done writing file.\r\n";       
  }

?>

The above code executes and save n no of .xlsx files in the folder, but the problem I'm getting is biggest count(result1) in the for loop executing in all saved excel files.

Was it helpful?

Solution

Before going deep, one thing is clear

You haven't executed the query for $result, neither fetch it and on $result1 query you are using it which is not possible,

Same problem exist with $result1

You can use:

$result = mysql_query('select * from table1');
while($fetch_result=mysql_fetch_array($result))
{
    $result2 = mysql("select * from table2 where table1_id = '".$fetch_result['table1_id']."'");

   while($fetch_result2=mysql_fetch_array($result2)
   {
    --your code--

But it is preferable to write JOIN instead of these two query

OTHER TIPS

You will want mysql_num_rows - http://php.net/manual/en/function.mysql-num-rows.php

$q = 'select * from table1';
$res = mysql_query($q);
$count = mysql_num_rows($result);

for ($j=0;$j<$count;$j++) {
    #code here
}

you may also want to look at mysql_fetch_assoc

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top