0

I would like to show progress bar when my Excel file is downloading. Here is my code to download data in Excel format from table. But I didn't get any idea of how to use progress bar when Excel is downloading.

Can anyone help me how to do that?

Here is my code:

<?php
if(isset($_POST['submit']))
{

/*******EDIT LINES 3-8*******/
$DB_Server = "localhost"; //MySQL Server    
$DB_Username = "root"; //MySQL Username     
$DB_Password = "";             //MySQL Password     
$DB_DBName = "project";         //MySQL Database Name  
$DB_TBLName = "users123"; //MySQL Table Name   
$filename = "usersdata";         //File Name
/*******YOU DO NOT NEED TO EDIT ANYTHING BELOW THIS LINE*******/    
//create MySQL connection   
$sql = "Select * from $DB_TBLName";
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());
//select database   
$Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno());   
//execute query 
$result = @mysql_query($sql,$Connect) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());    
$file_ending = "xls";
//header info for browser
header("Content-Type: application/xls");    
header("Content-Disposition: attachment; filename=$filename.xls");  
header("Pragma: no-cache"); 
header("Expires: 0");
/*******Start of Formatting for Excel*******/   
//define separator (defines columns in excel & tabs in word)
$sep = "\t"; //tabbed character
//start of printing column names as names of MySQL fields
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . "\t";
}
print("\n");    
//end of printing column names  
//start while loop to get data
    while($row = mysql_fetch_row($result))
    {
        $schema_insert = "";
        for($j=0; $j<mysql_num_fields($result);$j++)
        {
            if(!isset($row[$j]))
                $schema_insert .= "NULL".$sep;
            elseif ($row[$j] != "")
                $schema_insert .= "$row[$j]".$sep;
            else
                $schema_insert .= "".$sep;
        }
        $schema_insert = str_replace($sep."$", "", $schema_insert);
        $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
        $schema_insert .= "\t";
        print(trim($schema_insert));
        print "\n";
    } 
    }  
?>

<form method="post" action="">
<button type="submit" name="submit" class="btn btn-default">Download Excel</button>

    </form>

Please some one help me how to show progressbar.

suresh
  • 439
  • 3
  • 18
  • 2
    Here's a simple Google search: [HTML PHP Progress Bar](https://stackoverflow.com/questions/1802734/html-php-progress-bar) – Julian David Jun 07 '18 at 18:23

1 Answers1

0

You're not going to be able to solve for that directly in PHP, as PHP is processed entirely, and then sent to the browser. You'll need to combine Javascript, perhaps an ajax request, and PHP to achieve what you'd like to do.

There's a good example here: How would you create a progress bar with AJAX/jQuery for downloading XML content?

Matthew Knight
  • 631
  • 5
  • 13