0

特定のテーブルとその値から特定のフィールドを取得し、そのデータを使用してExcelファイルを作成するCSVエクスポートスクリプトがあります。以下のスクリプトを参照してください。

最初に列名を取得します(IDを除く)。次に、firstname、lastname、employee_id、unit、presentの値を取得し、これらすべての値をExcelファイルに入れます。

ここで、テーブルからデータを取得することに注意してください。table_infoこのテーブルでは、UNITとPRESENTは数値からのみ存在します。これらの番号は、他の2つのテーブルからのユニット/プレゼントのIDを表します。

table_units(id、title)table_presents(id、title)

私が欲しいのは、Excelシートにユニット/プレゼントの番号(ID)ではなく、ユニット/プレゼントのタイトルが表示されていることです。どうすればこれを達成できますか?私のPHPの知識はここで止まります。

        $table = 'table_info';
    $file = 'export';

    $result = mysql_query("SHOW COLUMNS FROM ".$table."");
    $i = 0;
    if (mysql_num_rows($result) > 0) {
        while ($row = mysql_fetch_assoc($result)) {
            if($row['Field'] != 'id'){
                $csv_output .= $row['Field']."; ";
                $i++;
            }
        }
    }
    $csv_output .= "\n";

    $values = mysql_query("SELECT firstname, familyname, employee_id, unit, present FROM ".$table."") or die(mysql_error());
    while ($rowr = mysql_fetch_row($values)) {

        for ($j=0;$j<$i;$j++) { 
            $csv_output .= $rowr[$j]."; ";
        }
        $csv_output .= "\n";
    }

    $filename = $file."_".date("Y-m-d_H-i",time());
    header("Content-type: application/vnd.ms-excel");
    header("Content-disposition: csv" . date("Y-m-d") . ".csv");
    header("Content-disposition: filename=".$filename.".csv");
    print $csv_output;
    exit;
4

2 に答える 2

0

table_units と table_presents を含む結合を行うように SQL クエリを変更します。または、結合によってパフォーマンスのボトルネックが発生することが懸念される場合は、外部キー (unit_id、present_id) がある場合に参照できる ID をキーとする配列に table_units と table_presents を格納できます。

于 2011-12-01T17:35:17.380 に答える
0

;の代わりに,使用している理由がわからない

ここに私が発見した問題があります:-

$result = mysql_query("SHOW COLUMNS FROM ".$table."");
==>
$result = mysql_query("SHOW COLUMNS FROM ".$table." WHERE Field!='id'");
// so, it would skip column id

すべてfor ($i ... )が必要ではなく;、すべての行に余分なものがある場合
は、代わりに内破を行います:-

$csv_output .= $row['Field']."; ";
==>
$csv_output .= implode(';', $row);
于 2011-12-01T18:27:12.487 に答える