-4

CSV アップロード機能を使用すると、すべての繰り返しデータを MySQL データベースにアップロードできます。次のようなフィールドがあるとします。

+-----+-------+-----+--------+
| | 年 | 年 | 月 | 月 | 日 | 日 | フィギュア |
+-----+-------+-----+--------+
  2012 01 01 200
  2012 01 02 303
  2012 01 03 632
  ...
  2012 01 31 323
+-----+-------+-----+--------+

私のデータシートには、次の 2 つの共通点があります。

CSVが私のために行うことは次のとおりです。

2012,01,01,200
2012,01,02,303
2012,01,03,632
...
2012,01,31,323

年と月の両方のフィールドでの純粋な繰り返し。この 2 つのフィールドを CSV で何らかの方法で共通化できれば、入力ユーザーにとってははるかに良いでしょう。

つまり、結論は次のとおりです。

  • CSV アップロードを使用して、より少ない入力でいくつかの共通フィールドを挿入するにはどうすればよいですか?
4

2 に答える 2

0

これがあなたが話しているワードプレスプラグインとどのように統合されるかについては実際には言えませんが、空白の列に前のレコードの値が入力される手法を採用するには、次のようなことができます (一意のフィールド名を持つ csv ファイル)。

<?php
$fp = fopen($csvFile, "r");
// get the header line

$header = fgetcsv($fp);
// seed the previous record array
$previousRec = array_combine($header, array_fill(0, count($header), ""));

while ($row = fgetcsv($fp)){
    $row = array_combine($header, $row);
    // filter with a closure requires php 5.3
    $filtered = array_filter($row, function($a){ return trim($a) !== "";});

    // merge the new data on top of the old with filtered values gone.
    $row = array_merge($previousRec, $filtered);

    // do something with row

    // store the row as the previousRec for the next time arround.
    $previousRec = $row;
} 
于 2013-07-15T04:58:10.403 に答える
0

@DevZer0 が示唆するように、CSV は空のフィールド (または欠落しているフィールド) の適切な選択ではありません。

テキストベースのソリューションを使用したい場合は、JSON / XML を試すことができます。

管理されたアプローチを使用する場合は、MySQL / MSSQL などの DBMS を使用してみてください。

または、上記の組み合わせ、ファイルベースのデータベース システムである SQLite です。

于 2013-07-15T04:49:09.660 に答える