私はdrupal 7を使用しており、データモジュールに自分のテーブルに手動で追加したテーブルを管理/採用させていますdrupal db。私が期待していたのは、 csvファイルは特定のコンテンツタイプを介してアップロードされます。ルールを使用してカスタムphpを実行し、csvをテーブルにインポートできます(表示されているものからfeedsdataprocessorが存在しないため) drupal_write_record =関数ですが、問題は、最初にファイルから配列を取得する方法です。次に、ファイルがテーブルの構造と異なる場合があります。たとえば、csvに列1、2、3、4、および3がある場合があります。 4,5,6,7。ヘッダーを確認して管理テーブルにインポートするにはどうすればよいですか?
概念的な手順:
ルール統合がどのように機能するかはわかりませんが、ノードをノードに渡すことができると想定しています。
したがって、ステップ1では、$ nodeに格納され、フィールドの名前がfield_csv_fileであると想定して、fopen()にURLを渡すことができます。
$csv_uri = $node->field_csv_file['und'][0]['uri'];
これで、fopen()を開いてファイルハンドルを取得できます。
$handle = fopen($csv_uri, 'r');
価値がない場合は、先に進みません。
ヘッダー行を読み取ります。
$row = fgetcsv($handle);
$columns = array();
foreach ($row as $i => $header) {
$columns[$i] = trim($header);
}
次に、各行をロードしてフォーマットを変換します。
while ($row = fgetcsv($handle)) {
$record = array();
foreach ($row as $i => $field) {
// This is pretty brittle... if someone screws up the field
// names the data won't be written.
$record[$columns[$i]] = $field;
}
drupal_write_record('your_table', $record);
}
ファイルを閉じます。
fclose($handle);
だからこれに関する問題: