2011-12-01 8 views
0

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

最初にカラム名を取得します(IDを除く)。 第2に、firstname、lastname、employee_id、unitおよびpresentの値を取得し、これらの値をすべてExcelファイルに格納します。

テーブルからデータを取得することに注意してください。table_info このテーブルでは、UNITとPRESENTは数値の中にのみ存在します。これらの数字は、他の二つのテーブルから存在ユニット/のIDが表す:私が持っているしたいと思い何

table_units(ID、タイトル) table_presents(ID、タイトル)

をExcelシートで、それはdoesnのことですユニット/プレゼントの番号(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; 

答えて

0

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

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); 
関連する問題