0

以下のようなExcelシートにデータがあります。

ここに画像の説明を入力

データを読み取る必要があります (csv 形式を試してみます。そうでない場合は提案してください)。PHP を使用してデータを読み取る...

以下のように 2 つのテーブルを作成します。

1.

ここに画像の説明を入力

2.

ここに画像の説明を入力

  1. このような ExtJs ツリーを期待しています。

ここに画像の説明を入力

ステップ 1 で問題が発生しました。データベースがテーブルのように更新されるように、Excel シート、csv ファイルを読み取るにはどうすればよいですか1

4

2 に答える 2

1

何かのようなもの

lastvalues=array(); // To hold the last value on each level
data=array();
foreach($lines as $i=>$line){
  elems=explode(',',$line);
  foreach($elems as $n=>$e){
     if($e>''){
        $data[$i]=$e;
        lastvalues[$n]=$i;
        if($n){ // makes no sense for 0th level
           $tree[]=array('parent'=>$lastvalues[$n-1],child=>$i);
        }
     }
  }
}

データ構造を提供する必要があります。$data および $tree 配列ではなく、SQL 挿入を使用できます。

于 2012-11-21T14:31:29.363 に答える
1

ここに解決策がありますが、私はあなたと同じ Data_Id を維持していませんでした (深さとノードによって ID をインクリメントしているようですが、行番号を使用しただけです)。

<?php
$data = <<<EOT
Eatables,,
,Fruits,
,,Apple
,,Mango
,Vegetables,
,,Tomatoes
,,Potatoes
EOT;

$mysqli = new mysqli("localhost", "username", "password", "test");

$dataInsertStatement = $mysqli->prepare("INSERT INTO Data (Data_Id, Data_Value) VALUES (?, ?)");
$treeInsertStatement = $mysqli->prepare("INSERT INTO Tree (parent_id, child_id) VALUES (?, ?)");

$lines = explode("\n", $data);

$path = array();

foreach ($lines as $rowNum => $line) {
    // convert line of csv to array
    $row = str_getcsv($line);
    // loop through the row's fields and find the one that's not empty
    foreach ($row as $column => $value) {
        if (!empty($value)) {
            // use row number + 1 as $Data_Id
            $Data_Id = $rowNum + 1;

            // track our depth in the tree
            $path[$column] = $Data_Id;

            // insert the data
            $dataInsertStatement->bind_param('is', $Data_Id, $value);
            $dataInsertStatement->execute();

            // check if this node has a parent
            if (isset($path[$column - 1])) {
                // connect this node to its parent in the tree
                $treeInsertStatement->bind_param('ii', $path[$column - 1], $Data_Id);
                $treeInsertStatement->execute();
            }

            continue;
        }
    }
}

$mysqli->close();
于 2012-11-21T14:30:25.133 に答える