2016-06-16 9 views
0

16 - 6月 - 16HTMLフォームのフィールドに配列

こんにちは、 を作成する私は、テキスト、ラジオボタン、チェックボックス、テキストエリアのフィールドを持つHTMLフォームを持っています。私はすべてのフィールドをCSVファイルに書きたいと思います。 CSVファイルに書き込んでいますが、いずれかのフィールドにカンマがあると、コンマの後のテキストが次のフィールドに移動します。

私はいくつかの調査を行い、「fputcsv」を使用する必要があることを発見しました。私が見つけたすべての例では、データベースからデータを取得し、配列を作成していました。私は私のフォームのデータから配列を作成する方法を知りたいので、 'fputcsv'と一緒に使うことができます。以下は私のコードのサンプルです。

// Create file. If file has been created, open file. 
$myfile = fopen("ZZZmycsv.csv", "a") or die("Unable to open file!"); 

// Write to file. 
// Column headers 
$msg = "First Name, Last Name, Organization, Email, City, State, Comment 1, Comment 2 \n"; 

// Form variables 
$msg .= "$firstName, $lastName, $organization, $email, $city, $state, $comment1, $comment2 \n"; 

できるだけ詳しくお答えください。

時間と配慮を事前に感謝します。

+0

デリミタを使用する必要があると私は信じています!その後、あなたのデータにコンマを置くことができます。列を分割しません。[3番目のパラメータの項目を確認してください](http://php.net/manual/en/function.fputcsv.php#refsect1-function.fputcsv-parameters) – Dale

+1

"どのように配列を作成する..? " '$ array = [$ firstName、... $ comment2];' – Steve

答えて

0

、デフォルトのエスケープ文字(「\」) がすでに存在しているので、あなたがしなければならないすべては作るです配列をフォーム入力から読み込んでファイルに書き出します。この例では

// Create file. If file has been created, open file. 
$myfile = fopen("ZZZmycsv.csv", "a") or die("Unable to open file!"); 

// Write to file. 
// Column headers 
$headers = array('First Name', 'Last Name', 'Organization', 'Email', 'City', 'State', 'Comment 1', 'Comment 2'); 
fputcsv($myfile, $headers); 

// Form variables 
$formArray = array($firstName, $lastName, $organization, $email, $city, $state, $comment1, $comment2); 
fputcsv($myfile, $formArray); 

私はあまりにもファイルにヘッダを書いていますが、関数fopen(...、「」)を使用している場合。これは意味をなさないでしょうので"w"をパラメータとして使用することができます(ファイルに1行以上を格納したい場合は、各行の前にヘッダーを書きません)。

希望がこれを助けました、歓声

+0

キャッシュビー、助けてくれてありがとう - 私はあなたの提案を試みます。しかし、1つの質問:配列では、私は合計18の変数を持っています。 18個の変数を1つの配列行に分割するのではなく、分割するのがベストプラクティスですか? – alex

+0

あなたの提案は完璧に機能しました! – alex

+0

キャッシュビー、あなたの提案は完璧に機能しました! FYIとして、Dreamweaverとすべての変数を次の行に使用しています。私は3つの行の上に18の変数を持つ1つの配列()を持っています。より良い方法があれば、アドバイスをしてください。しかし、それが機能しているのなら、ホイールを再設計するのはなぜですか? 列見出しを静的にすることはできますか?私の回避策は、適切なフィールドにヘッダーを含むCSVファイルをアップロードすることでした。ヘッダーのために書いた2行のコードを削除しました。 本当にありがとうございます。 – alex

0

PHP:PHPのドキュメントを複製するには:そこ関数はその

http://php.net/manual/en/function.fputcsv.php

編集のためだ

<?php 

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'), 
    array('123', '456', '789'), 
    array('"aaa"', '"bbb"') 
); 

$fp = fopen('file.csv', 'w'); 

foreach ($list as $fields) { 
    fputcsv($fp, $fields); 
} 

fclose($fp); 
?> 

上記の例file.csvになりに次のように記述します:

aaa、bbb、ccc、dddd
123,456,789
「あなたはfputcsvを使用する場合は、」「AAA」「」、「」「BBB」「」

関連する問題