3

実際、.csv ファイルを生成する方法がわかりません。さまざまな電子メモを調べましたが、まだ取得できません。

私がしたいこと?

「 partner_name」と「link 」をエコーするコードを書きましたが、これらはformDetails.csvファイルに入れる必要があります。

$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;
}

それは何をしますか?

テーブルから form_id と partner_name を取得するだけef_form_master_v1です。$partnerName$partnerlinkが定義され、それに応じて表示されます。

しかし、$partnerNameとをエコーする代わりに、これらのパラメーターの配列を という名前の CSV ファイル$partnerlinkに入れたいと思います。formDetails.csv

4

4 に答える 4

6

ドキュメントfputcsvは非常に明確ですが、以下に例を示します。

$handle = fopen('/path/to/formDetails.csv', 'w');

while(<your query loop>) {
    $write = array($partner_name, $partner_link);
    fputcsv($handle, $write);
}

fclose($handle);
于 2013-01-02T14:06:11.203 に答える
3
$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);

指定した現在のディレクトリまたはパスに formDetails.csv が存在することを確認してください。

于 2013-01-02T14:07:17.290 に答える
2

最初にファイルを作成する必要があります。次の形式でお勧めしますSplFileObject

$csvFile = new SplFileObject('formDetails.csv', 'w+');

列ラベルを含む最初の行を作成することもできます。これは、各列のエントリとSplFileObject::fputcsvメソッドを持つ配列を使用して機能します。

$cvsFile->fputcsv(array('Partner', 'Link'));

その後、代わりに(またはデバッグ目的で隣に):

echo $partner_name . '=>' . $partner_link, "\n";

そのファイルに出力します。

$csvFile->fputcsv(array($partner_name, $partner_link));

以上です。上からの眺め:

$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) {

    ...
于 2013-01-02T14:20:33.657 に答える
0

私の例が役立つことを願っています (顧客は Excel との互換性のために csv ファイルを望んでいました):

$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);

そのような csv ファイルがない場合は作成されます。

于 2013-01-02T14:10:44.313 に答える