How to use foreach in fputcsv? How to use foreach in fputcsv? wordpress wordpress

How to use foreach in fputcsv?


You seem to have closed the foreach() early - open the file above the loop, put the headers at the top, and have the fputcsv() inside it then close the file outside the loop. You also need to use the "a" - append - mode not "w" or it will overwrite everything each time.

Keep your WordPress and Query part at the top and try this order for the code, so that the loop passes over the fputcsv() each time it gets a new item:

If you need to put the headers inside the file this has suitable code https://www.jonasjohn.de/snippets/php/post-request.htm

 //open file pointer to standard output $fp = fopen('php://output', 'a'); if ($fp){     if (filesize($fp) == 0){      // headers     // add your header rows if it is a new file     // you may need to move these header(...); to the top of your page       // if you get "Headers already sent" errors as you have already included (required)     // a header - otherwise print them using fputs(); to the output file      // if that is where you want them.     // for example fputs($fp, "Pragma: public\r\n");      //             fputs($fp, "Content-type: text/csv\r\n");     header('Pragma: public');     header('Expires: 0');     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');     header('Content-Description: File Transfer');     header('Content-Type: text/csv');     header('Content-Disposition: attachment; filename=export.txt;');     // add your CSV header row if it is a new file     fputcsv($fp, array("[quickid]", "[sender]", "[receiver]", "[orgno]", "[vatno]", "[category1text]", "[category2text]", "[category3text]", "[category1no]", "[category2no]", "[category3no]", "[name]", "[address1]", "[address2]", "[zipcode]", "[city]", "[state]", "[country]", "[contact]", "[email]", "[phone]", "[fax]", "[sms]", "[doorcode]", "[postaladdress1]", "[postaladdress2]", "[postalzipcode]", "[postalcity]", "[postalstate]", "[postalcountry]", "[deliv1]", "[deliv2]", "[deliv3]", "[deliv4]", "[receiverref]", "[senderref]", "[codref]", "[profilegroup]", "[account_1_type]", "[account_1_number]", "[account_1_bic]", "[account_2_type]", "[account_2_number]", "[account_2_bic]", "[account_3_type]", "[account_3_number]", "[account_3_bic]", "[account_4_type]", "[account_4_number]", "[account_4_bic]", "[account_5_type]", "[account_5_number]", "[account_5_bic]", "[partner_plab_custno]", "[partner_plab_receiverid]", "[partner_plab_destcode]", "[partner_hit_custno]", "[partner_hit_retailerid]", "[partner_hit_sortpos]", "[partner_pbrev_custno]", "[partner_pbrev_paymentmethod]"), "\t", " ", "\n");     } // end of adding headers if new file     $my_query = new WP_Query($args);     $orders = $my_query->posts;     foreach($orders as $order)     {     $order_id = $order->ID;         $billing_first_name =get_post_meta($order_id,'_billing_first_name',true);         $billing_last_name = get_post_meta($order_id,'_billing_last_name',true);         $billing_name = $billing_first_name. " ". $billing_last_name ;         $billing_address = get_post_meta($order_id,'_billing_address_1',true);         $billing_address2 = get_post_meta($order_id,'_billing_address_2',true);         $billing_city = get_post_meta($order_id,'_billing_city',true);         $billing_postcode = get_post_meta($order_id,'_billing_postcode',true);         $billing_country = get_post_meta($order_id,'_billing_country',true);         $billing_email = get_post_meta($order_id,'_billing_email',true);         $billing_phone = get_post_meta($order_id,'_billing_phone',true);         fputcsv($fp, array("1", "N", "Y", "", "", "", "", "", "", "", "", $billing_name, $billing_address, $billing_address2, $billing_postcode, $billing_city, "", $billing_country, $billing_name, $billing_email, $billing_phone, "", $billing_phone, "", $billing_address, $billing_address2, $billing_postcode, $billing_city, "", $billing_country, "", "", "", "", "Ordernummer", "Ordernummer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""), "\t", " ", "\n");     }  // end of foreach fclose($fp); }else{ echo "Failed to open file $fp"; }  // end of if ($fp)

Ross Smith II's answer here might be useful fputcsv doesn't write any data in a CSV file

and you might need to add a "\n" at the end of the line (double quotes only) to make sure they don't all appear on the same line which scrolls across for miles. Might be handy reference http://php.net/manual/en/function.fputcsv.php

Chapter and verse on foreach():How does PHP 'foreach' actually work?