i required break-line i get my output in the browser, but it does not on the text file while i am downloading the txt file.

main thing is that i need some thing this kind of out put
4,
Firstname lastname,address,
orderid,product name ,
eof
4,
Firstname lastname,address,
orderid,product name ,
eof

above out put i get it in the browser but when i download this txt file with the header() that out put will come like below
4,Firstname lastname,address,orderid,product name ,eof,4,Firstname lastname,address,orderid,product name ,eof,

one more strange thing is that when i connect the fttp of the site and from there when i download that txt file it will show me the proper format as i need but when i use header() it will mess my txt file format

can anyone tell me the reason my code is below

include('wp-load.php');
generate_csv();
function generate_csv()
{
    global $wpdb;
    $Query = "SELECT posts.ID
    FROM {$wpdb->posts} AS posts
    LEFT JOIN {$wpdb->term_relationships} AS rel ON posts.ID=rel.object_ID
    LEFT JOIN {$wpdb->term_taxonomy} AS tax USING( term_taxonomy_id )
    LEFT JOIN {$wpdb->terms} AS term USING( term_id )
    WHERE   posts.post_type   = 'shop_order'
    AND     posts.post_status = 'publish'
    AND     tax.taxonomy      = 'shop_order_status'
    AND     term.slug NOT IN ('completed')";
    //$Query = "SELECT order_id FROM wp_woocommerce_order_items";
    $ResultQuery    = mysql_query( $Query );
    $Orders = array();
    while($ResultArray  = mysql_fetch_assoc($ResultQuery))
    {
        $Orders[] = $ResultArray['ID'];
    }
    /*$list = array (
        array('4')
     );*/
     foreach($Orders as $Order)
      {
        $OrderReport    = new WC_Order($Order);
        $Query = "SELECT user_id FROM wp_usermeta WHERE meta_key = 'first_name' AND meta_value = '".$OrderReport->shipping_first_name."'";
        $QueryGetUserId = mysql_query($Query);
        $GetUserId = mysql_fetch_assoc($QueryGetUserId);
        $Items = $OrderReport->get_items();
        foreach($Items as $Item)
        {
            $ProductID  = $Item['product_id']; 
            $ProductQTY = $Item['qty']; //
        }   
        if($ProductID=='188' or $ProductID=='205')
        {   
            if($ProductID=='188')
            {
                $ProductID='118945-5';  
            }
            if($ProductID=='205')
            {
                $ProductID='118946-3';  
            }               
            $GetUserId_csv='42069';
             $list .= '4'.PHP_EOL .$GetUserId_csv.' '.$OrderReport->id . ',' . ',' . 'FIL' .','.PHP_EOL . '' .$OrderReport->billing_first_name .' '. $OrderReport->billing_last_name . ','. $OrderReport->shipping_address_1 .','. $OrderReport->shipping_address_2 .','. $OrderReport->shipping_city.','.$OrderReport->shipping_state.','.$OrderReport->shipping_postcode.','.$OrderReport->billing_phone.','.'A'.','. 5001 .',' .PHP_EOL . ''. $ProductID .' ,' . ', '. $ProductQTY . ',' . ',' . ','.PHP_EOL .'***EOF***'.PHP_EOL; 
            //$list[]=array('***EOF***');
        }
        $CSVFile = time().'.txt';
        $fp = fopen( $CSVFile, 'w');
        fwrite($fp,$list);
        fclose($fp);
    }
    $path =  site_url( '/', 'relative')."/";
    $file = $path.$CSVFile;
    //sleep(10);
    output_file($CSVFile,$CSVFile, 'text/plain'); //this is the function which help me to download the txt file
}

?>

// function of out_file is below
 function output_file($Source_File, $Download_Name, $mime_type='')
  {
 /* 
   $Source_File = path to a file to output
   $Download_Name = filename that the browser will see
   $mime_type = MIME type of the file (Optional)
  */
  if(!is_readable($Source_File)) die('File not found or inaccessible!');
   $size = filesize($Source_File);
   $Download_Name = rawurldecode($Download_Name);
    /* Figure out the MIME type (if not specified) */
    $known_mime_types=array(
"pdf" => "application/pdf",
"csv" => "application/csv",
"txt" => "text/plain",
"html" => "text/html",
"htm" => "text/html",
"exe" => "application/octet-stream",
"zip" => "application/zip",
"doc" => "application/msword",
"xls" => "application/vnd.ms-excel",
"ppt" => "application/vnd.ms-powerpoint",
"gif" => "image/gif",
"png" => "image/png",
"jpeg"=> "image/jpg",
"jpg" =>  "image/jpg",
"php" => "text/plain"
    );
   if($mime_type==''){
   $file_extension = strtolower(substr(strrchr($Source_File,"."),1));
   if(array_key_exists($file_extension, $known_mime_types)){
    $mime_type=$known_mime_types[$file_extension];
    } else {
    $mime_type="application/force-download";
 };
 };
@ob_end_clean(); //off output buffering to decrease Server usage
// if IE, otherwise Content-Disposition ignored
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
header('Content-Type: ' . $mime_type);
header('Content-Disposition: attachment; filename="'.$Download_Name.'"');
header("Content-Transfer-Encoding: binary");
header('Accept-Ranges: bytes');
header("Cache-control: private");
header('Pragma: private');
header("Expires: Thu, 26 Jul 2012 05:00:00 GMT");
// multipart-download and download resuming support
if(isset($_SERVER['HTTP_RANGE']))
{
list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2);
list($range) = explode(",",$range,2);
list($range, $range_end) = explode("-", $range);
$range=intval($range);
if(!$range_end) {
    $range_end=$size-1;
} else {
    $range_end=intval($range_end);
}
$new_length = $range_end-$range+1;
header("HTTP/1.1 206 Partial Content");
header("Content-Length: $new_length");
header("Content-Range: bytes $range-$range_end/$size");
 } else {
$new_length=$size;
header("Content-Length: ".$size);
  }
  /* output the file itself */
  $chunksize = 1*(1024*1024); //you may want to change this
  $bytes_send = 0;
  if ($Source_File = fopen($Source_File, 'r'))
  {
    if(isset($_SERVER['HTTP_RANGE']))
     fseek($Source_File, $range);
     while(!feof($Source_File) &&
      (!connection_aborted()) &&
      ($bytes_send<$new_length)
       )
  {
    $buffer = fread($Source_File, $chunksize);
    print($buffer); //echo($buffer); // is also possible
    flush();
    $bytes_send += strlen($buffer);
}
 fclose($Source_File);
  } else die('Error - can not open file.');
die();
 }

Read more here: how can i give breakline in txt file i am exporting order details in txt file


Solution:

If you know the solution of this issue, please leave us a reply in Comment section, to update the question.

Related Wordpress search:

, , , , , ,

Wordpress related questions and answers: