0

さて、私が達成しようとしていることからやり直します。

必要に応じてフィールドを追加できるように、「訪問者名」セクションにフォームを作成したいサイトがあります。私はそれがうまくいったと思います。

<fieldset>
        <legend>Visitor Name</legend>
<div id="placeholder">
        <div id="addmore">
                <label for="firstname">First Name:</label>
                <input type="text" name="name[]" value="">
                <label for="lastname">Last Name:</label>
                <input type="text" name="name[]" value"">
                <label for="jobtitle">Job Title:</label>
                <input type="text" name="name[]" value="">
        </div>
</div>

そしてjsコードは

var _counter = 0;
function Add() {
    _counter++;
    var oClone = document.getElementById("addmore").cloneNode(true);
    oClone.id += (_counter + "");
    document.getElementById("placeholder").appendChild(oClone);
}

これにより、「ビジターの追加」ボタンが押されたときにフィールドが作成され、作成できる動的フィールドの量に制限はありません。

だから私はPHPの部分が私がハングアップしている場所だと思います。

これらの動的な値を php スクリプトに渡し、ファイルに配置するにはどうすればよいですか。

私が使うとき

foreach($_POST['name'] as $info) {
      fwrite($file, "$companyname,$info,$boxes,$boxes1,$boxes2,$boxes3,$boxes4,$boxes5,$boxes6,$boxes7,$boxes8,$boxes9,$boxes10,$boxes11 \n");
    }

私は得る

会社、フレッド、いいえ、いいえ、いいえ、いいえ、はい、いいえ、いいえ、いいえ、はい、いいえ、はい 会社、ウィリアムズ、いいえ、いいえ、いいえ、いいえ、はい、いいえ、いいえ、いいえ、いいえ、はい,いいえ,はい 会社,こんにちは,いいえ,いいえ,いいえ,いいえ,はい,いいえ,いいえ,いいえ,いいえ,はい,いいえ,はい 会社,トッド,いいえ,いいえ,いいえ,いいえ,はい,いいえ,いいえ,いいえ,いいえ,はい,いいえ,はい 会社,ウィリアムズ,いいえ,いいえ,いいえ,いいえ,はい,いいえ,いいえ,いいえ,いいえ,はい,いいえ,はい 会社,こんにちは,いいえ,いいえ,いいえ,いいえ,はい,いいえ,いいえ,いいえ,いいえ,はい,いいえ,はい

それ以外の

Company,Fred,Williams,Hello,No,No,No,No,Yes,No,No,No,No,Yes,No,Yes Company,Todd,Williams,Hello,No,No,No,No,Yes,No ,いいえ,いいえ,いいえ,はい,いいえ,はい

したがって、データを取得していると思いますが、上記の形式にする必要があります。

これについては私の無知で申し訳ありません。

私がする時:

$my_array = $_POST['name'];
$visitor = implode(",",$my_array);

その後

echo "$companyname,$visitor,$boxes,$boxes1,$boxes2,$boxes3,$boxes4,$boxes5,$boxes6,$boxes7,$boxes8,$boxes9,$boxes10,$boxes11 <br />";

複数の名前があり、それが私に与える

会社、ビリー、ウィリアムズ、テスト、ボビー、ウィリアムズ、テスト、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ

$visitor 配列を取得して $visitor セクションに追加するだけです。そのため、名前ごとに1行のファイルでデータを取得できません。

そして私がするとき

print_r($visitor);

テキスト ボックスに入力された情報を 1 行で取得します。

ビリー、ウィリアムズ、テスト、ボブ、ウィリアムズ、テスト

そして私がするとき

print_r($_POST);

私は得る

Array ( [companyname] => Buster [name] => Array ( [0] => bob [1] => Buddy [2] => Test [3] => bob [4] => Buddy [5] => Test ) [Submit] => Add Visitor )

私はこれを理解しました。

foreach($firstname as $key => $value){
fwrite($file, "$companyname,$value,$lastname[$key],$jobtitle[$key],$boxes,$boxes1,$boxes2,$boxes3,$boxes4,$boxes5,$boxes6,$boxes7,$boxes8,$boxes9,$boxes10,$boxes11 \n");
4

3 に答える 3

0

I'd recommend looking at @OmniPotents answer, another quick and [very] dirty option is:

$a = array('aaa', 'bbb', 'ccc', 'dddd');
$b = array('zzz', 'bbb', 'ccc', 'dddd');

function toCsv($arr) {
    return file_put_contents('file.csv', implode(",", $arr) . PHP_EOL, FILE_APPEND);
} 

toCsv($a);
toCsv($b);

Then file.csv would look like

aaa,bbb,ccc,dddd
zzz,bbb,ccc,dddd

Keep in mind that such a solution is not taking into consideration stuff like text delimiters which are important for certain CSVs

于 2013-03-16T06:10:41.940 に答える
0

データを配列に渡して t ファイルに書き込むことができるため、ここで PHP fputcsv() の使用方法を読んで、それがどのように役立つかを確認してください。http://php.net/manual/en/function.fputcsv.php

上記の URL の例:

<?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);
?>
于 2013-03-16T05:50:37.527 に答える
0

これは私の問題を解決するために私がしたことです

foreach($firstname as $key => $value){
fwrite($file, "$companyname,$value,$lastname[$key],$jobtitle[$key],$boxes,$boxes1,$boxes2,$boxes3,$boxes4,$boxes5,$boxes6,$boxes7,$boxes8,$boxes9,$boxes10,$boxes11 \n");

これを元の投稿に入れましたが、これも回答として投稿すると思います。

于 2013-03-27T14:40:29.357 に答える