同様の質問を見つけましたが、情報が不足しているため解決策がありませんでした。接続された MySQL DB から次の形式でフォーマットされた CSV ファイルにデータを出力する以下のコードがあります…</p>
名:姓:GC 番号:部門:開始日:導入:理論:火災安全:ガバナンス: John:Smith:123456:HR:03/08/2013:合格:合格:不合格:合格: Jane:Watson:123445:IT:03/08/2013:合格:不合格:合格:合格: Mark:Byron:123442:IT:03/08/2013:失敗:失敗:未完了:未完了:
:
= 各列を表示するためだけに使用
データベースにあるすべての行と列を同じ構造で出力し、列ヘッダーの名前を変更して、Excel にインポートしたときにわかりやすいようにします。必要なのは、この出力のフォーマットを次のように変更することです…</p>
名:姓:GC番号:部門:電子メール:開始日:モジュール:ステータス: John:Smith:123456:HR:03/08/2013:はじめに:合格: ジョン:スミス:123456:HR:03/08/2013:理論:合格: John:Smith:123456:HR:03/08/2013:火災安全:失敗: John:Smith:123456:HR:03/08/2013:ガバナンス:パス: Jane:Watson:123445:IT:03/08/2013:はじめに:パス: Jane:Watson:123445:IT:03/08/2013:理論:失敗: ジェーン:ワトソン:123445:IT:03/08/2013:消防:合格: Jane:Watson:123445:IT:03/08/2013:ガバナンス:パス: Mark:Byron:123442:IT:03/08/2013:はじめに:失敗: マーク:バイロン:123442:IT:03/08/2013:理論:失敗: Mark:Byron:123442:IT:03/08/2013:防火:未完了: Mark:Byron:123442:IT:03/08/2013:ガバナンス:未完了:
:
= 各列を表示するためだけに使用
そのため、各人に対して 1 つのエントリを作成し、その人が行った各モジュールの結果ではなく、その人が行ったモジュールごとに個別のエントリにする必要があります。合計で、この DB にはさらに多くのフィールドと 35 のモジュールがありますが、ここでは説明のために省略しています。
PHPなどの初心者なので、これを行う方法を理解するのに苦労しています。これは可能ですか、またはDBの構造を目的の形式に変更する方が簡単ですか?
正しい方向への助けや指針は素晴らしいでしょう。トニー
<?php
function exportMysqlToCsv($table,$filename = 'db-snapshot.csv')
{
$sql_query = "select fldFirstname as 'First Name',
fldSurname as 'Surname',
fldGMCNumber as 'GCNumber',
fldDestDept as 'Dept',
fldStartDate as 'Start Date',
fldModule1 as 'Introduction',
fldModule2 as 'Theory',
fldModule3 as 'Fire Safety',
fldModule4 as 'Governance'
from $table";
// Gets the data from the database
$result = mysql_query($sql_query);
$f = fopen('php://temp', 'wt');
$first = true;
while ($row = mysql_fetch_assoc($result)) {
if ($first) {
fputcsv($f, array_keys($row));
$first = false;
}
fputcsv($f, $row);
} // end while
$size = ftell($f);
rewind($f);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: $size");
// Output to browser with appropriate mime type, you choose ;)
header("Content-type: text/x-csv");
// header("Content-type: text/csv");
// header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$filename");
fpassthru($f);
exit;
}
?>