• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 255
  • Last Modified:

Need row output delimeter, encaps, escape correctly for csv

I am outputting some data from mysql into csv

Some of the columns are misaligned which tells me that it needs to be encapsulated or delimited correctly

This is what i need for the output

Field Delimiter      , (comma)
Field Encapsulation      " (double quotes)
Escaped by \ (backslash)




$data = "$billing_first_name,$billing_last_name,$billing_address1,$billing_city,$billing_state,$billing_postal_code,$billing_email,$cc_number,$cc_expire" . "\r\n";

Open in new window

0
pdheady
Asked:
pdheady
  • 3
  • 3
2 Solutions
 
Ray PaseurCommented:
This function may help:
http://us3.php.net/manual/en/function.fputcsv.php

Let me know if you try that and still have any questions, ~Ray
0
 
pdheadyAuthor Commented:
Ya i was lookin at that function but i cant get it to work. PHP error log says i need the 2nd parameter ($data) into an array. How do I do this? Here is what I have so far.


$q = "my query here";
 
$fp = fopen('/path/to/my/file/file.csv','w');
 
$query = mysql_query($q);
 
while ($row = mysql_fetch_array($query)) {
 
$billing_first_name = $row["billing_first_name"];
$billing_last_name = $row["billing_last_name"];
$billing_address1 = $row["billing_address1"];
$billing_city = $row["billing_city"];
$billing_state = $row["billing_state"];
$billing_postal_code = $row["billing_postal_code"];
$billing_email = $row["billing_email"];
$cc_number = $row["cc_number"];
$cc_expire = $row["cc_expire"];
$billing_phone = $row["billing_phone"];
$billing_country = $row["billing_country"];
 
$data = "$billing_first_name,$billing_last_name,$billing_address1,$billing_city,$billing_state,$billing_postal_code,$billing_email,$cc_number,$cc_expire" . "\r\n";
 
fputcsv($fp, $data, $sSeparator=',', $sEnclosure='"');
 
}

Open in new window

0
 
Ray PaseurCommented:
I think you might want to just pass the $row variable to the fputcsv() function.  If you have the query set up right in $q, the fields will be ordered correctly in the resulting output.

HTH, ~Ray
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
pdheadyAuthor Commented:
Ya, I did it this way tho below and it works. Looks like it is only encapsulating in double quotes when it needs to...is this how it's supposed to function?

Here's how i setup the array.

$data[1] = $orders_id;
$data[2] = $customers_id;
$data[3] = $billing_first_name;
$data[4] = $billing_last_name;
$data[5] = $billing_address1;

Example row output in csv, notice not all columns are encapsulated with double quotes. All records seem to be this way and encapsulation is sporadic.

1234,33455,John,Doe,"123 Main St",boston,ma,12345,test@example.net,1111222233334444,0110," 123-456-7890",US
0
 
Ray PaseurCommented:
Yes, it will only encapsulate when it needs to.  If you need to encapse all of them, it would be a manual process in your script, and you could just put the vars together with the quotes and delimiters, ended by a newline character, then write with fputs() instead of fputcsv().
0
 
pdheadyAuthor Commented:
cool thanks alot
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now