2011-12-01 2 views
0

특정 테이블 및 해당 값의 특정 필드를 가져 와서 데이터가있는 Excel 파일을 만드는 CSV 내보내기 스크립트가 있습니다. 아래 스크립트를 참조하십시오.CSV 내보내기를위한 데이터베이스 값 변경

먼저 (ID를 제외하고) 열 이름을 가져옵니다. 두 번째로 firstname, lastname, employee_id, unit 및 present의 값을 가져 와서 이러한 모든 값을 Excel 파일에 저장합니다.

이제 표의 데이터를 가져옵니다. table_info 이 표에서 UNIT 및 PRESENT는 숫자로만 존재합니다.

table_units (ID, 제목) table_presents (ID, 제목)

내가하고 싶은 것은 Excel 시트에서이 아무튼이다 :이 숫자는 두 개의 다른 테이블에서 존재하는 기기의 ID 년대를/대표 단위/현재의 수 (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가 포함 된 조인을 수행하십시오. 또는 조인으로 인해 성능 병목 현상이 발생할 염려가있는 경우 table_units 및 table_present를 ID로 입력 된 배열에 저장할 수 있습니다. 여기에는 foriegn 키 (unit_id, present_id)가있을 때 참조 할 수 있습니다.

$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 ...)이 더 필요하지 않습니다 모든, 당신은 모든에 추가 ;이 -이 :

0

당신이 ; 대신 ,으로 사용하는 이유는 확실하지, 여기

내가 발견 문제는 행
대신 내파하라 : -

$csv_output .= $row['Field']."; "; 
==> 
$csv_output .= implode(';', $row);