Reputation: 1063
Actually I have no idea how to generate a .csv file.I have gone through various e-notes but still not getting.
What I want to do?
I have written a piece of code to echo "partner_name" and "link" but these need to be put into a formDetails.csv file.
$result = mysql_query(
"SELECT form_id, partner_name
FROM `ef_kabaadkhana`.`ef_form_master_v1`
WHERE active = 1 AND listed = 1;"
);
while ($formDetails = mysql_fetch_assoc($result)) {
$partner_name = $formDetails['partner_name'];
$formId = $formDetails['form_id'];
$slugifyPartnername = slugify($partner_name);
$partner_link = "http://myforms.com/form/{$formId}/{$slugifyPartnername}";
echo $partner_name . '=>' . $partner_link, "\n";
}
function slugify($text) {
$text = preg_replace('~[^\\pL\d]+~u', '-', $text);
$text = trim($text, '-');
if (function_exists('iconv'))
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
$text = strtolower($text);
$text = preg_replace('~[^-\w]+~', '', $text);
if (empty($text))
return 'n-a';
return $text;
}
What it does?
It simply takes form_id and partner_name from ef_form_master_v1
table. The $partnerName
and $partnerlink
are defined and displayed accordingly.
But Instead of echoing $partnerName
and $partnerlink
, I want to put these array of parameters in a CSV file named formDetails.csv
.
Upvotes: 3
Views: 883
Reputation: 198209
First you need to create the file, I suggest in form of a SplFileObject
:
$csvFile = new SplFileObject('formDetails.csv', 'w+');
You might also want to create a first line containing the column-labels, this works by using an array with an entry for each column and the SplFileObject::fputcsv
method:
$cvsFile->fputcsv(array('Partner', 'Link'));
Then later on, instead of (or next to for debugging purposes):
echo $partner_name . '=>' . $partner_link, "\n";
You output it into that file:
$csvFile->fputcsv(array($partner_name, $partner_link));
And that's it. The view from above:
$result = mysql_query(
"SELECT form_id, partner_name
FROM `ef_kabaadkhana`.`ef_form_master_v1`
WHERE active = 1 AND listed = 1;"
);
### Create CSV File ###
$csvFile = new SplFileObject('formDetails.csv', 'w+');
$cvsFile->fputcsv(array('Partner', 'Link'));
while ($formDetails = mysql_fetch_assoc($result)) {
$partner_name = $formDetails['partner_name'];
$formId = $formDetails['form_id'];
$slugifyPartnername = slugify($partner_name);
$partner_link = "http://myforms.com/form/{$formId}/{$slugifyPartnername}";
echo $partner_name . '=>' . $partner_link, "\n";
### Output each row to CSV File ###
$csvFile->fputcsv(array($partner_name, $partner_link));
}
function slugify($text) {
...
Upvotes: 2
Reputation: 7715
The documentation on fputcsv
is pretty clear, however I will provide an example below:
$handle = fopen('/path/to/formDetails.csv', 'w');
while(<your query loop>) {
$write = array($partner_name, $partner_link);
fputcsv($handle, $write);
}
fclose($handle);
Upvotes: 6
Reputation: 55
hope my example will helps (customer wanted csv-files for Excel compatibility) :
$data = $this->_getParam('data'); // getting array of some values
$text = $data[0] . ";";
$text .= $data[1] . ";";
$text .= "\"" . $data[2] . " (N:" . $data[3] . ")" . "\";";
$text .= $data[3];
$ext = '.csv';
$filename = date("Y-m-d") . $ext;
$way = "files/{$filename}";
$fp = fopen($way, "a");
fwrite($fp, $text . PHP_EOL);
fclose($fp);
if there is no such csv-file it will create one.
Upvotes: 0
Reputation: 15044
$fp = fopen('formDetails.csv', 'w');
while ($formDetails = mysql_fetch_assoc($rs))
{
$partner_name=$formDetails['partner_name'];
$formId=$formDetails['form_id'];
$slugifyPartnername=slugify($partner_name);
$partner_link="http://myforms.com/form/{$formId}/{$slugifyPartnername}";
echo $partner_name.'=>'.$partner_link;
fputcsv($fp, array($partner_name, $partner_link));
}
fclose($fp);
Make sure formDetails.csv exists in current directory or path you specify.
Upvotes: 3