table_sql 을 엑셀파일로 다운받기.
<?
//****************************************************************************//
// Author : shkim ( isunnyk@empal.com , idxzone@naver.com )
// StartDate : 2004.01.15.Thur
// LastUpdate :
//****************************************************************************//
########################################################
function make_csvFile($str, $saveFileName=""){
//표준출력을 엑셀파일로 저장하기..
/**
//사용법
$str = "HaHAhadskjfsk ";
$t = make_csvFile($str, $saveFileName="");
if( ! $t ){
echo "<p>실패";
}else{
#echo "<p>성공적";
}
***/
$fileN = $saveFileName;
if( ! $fileN ){
$date = date("Ymd");
$fileN = "tmp_$date.xls";
}
if( ! $str ){
return false;
}else{
//표준출력을 엑셀파일로 저장하기..
header( "Content-type: application/vnd.ms-excel" );
header( "Content-Disposition: attachment; filename=${fileN}" );
header( "Content-Description: PHP4 Generated Data" );
echo $str;
return true;
}
}
########################################################
function makeCSV_DBTable_Col_Values($dbcon, $table, $where){
//주의사항: 게시판의 경우...코멘트의 경우.... 개행이 존재한다. 이런 경우는 어떻게 할것인가?
if( ! $table || ! $dbcon ){
echo "[ERROR] 테이블과 connection 을 지정하시오.";
exit;
return false;
}
$SQL = "SELECT * FROM $table $where";
$sz = mysql_query($SQL, $dbcon);
if( ! $sz ){
$error = mysql_error($dbcon);
$errno = mysql_errno($dbcon);
echo "[ERROR] : $errno : $error";
exit;
return false;
}else{
$sep_tab = "\t";
$sep_nl = "\n";
$STR_csv = "";
//#### 필드명(칼럼명) 추출하기
$field_Num = mysql_num_fields($sz);
$fieldNameAry = array();
for($i=0; $i<$field_Num; $i++){
$fN_01 = mysql_field_name($sz, $i);
#echo $fN_01 . $sep_tab;
$STR_csv = $STR_csv . $fN_01 . $sep_tab;
$fieldNameAry[] = $fN_01;
}//for
#echo $sep_nl;
$STR_csv = $STR_csv . $sep_nl;
//#### 필드명(칼럼명) 추출하기
while($rows = mysql_fetch_array($sz)){
for( $j=0; $j<$field_Num; $j++){
$val = $fieldNameAry[$j];
$tmp_name = $$val = $rows[$val]; //$$val ........... 칼럼명
#echo "$tmp_name=". $rows[$val] . $sep_tab;
$STR_csv = $STR_csv . $rows[$val] . $sep_tab;
}//for............. ex> $mem = $rows[mem]; ....
#echo $sep_nl;
$STR_csv = $STR_csv . $sep_nl;
}//while
#echo $STR_csv;
return $STR_csv;
return true;
}
}
########################################################
function makeCSV_DBTable_Col_Values_Comment($dbcon, $table, $where){
//주의사항: 게시판의 경우...코멘트의 경우.... 개행이 존재한다. 이런 경우는 어떻게 할것인가?
if( ! $table || ! $dbcon ){
echo "[ERROR] 테이블과 connection 을 지정하시오.";
exit;
return false;
}
$SQL = "SELECT * FROM $table $where";
$sz = mysql_query($SQL, $dbcon);
if( ! $sz ){
$error = mysql_error($dbcon);
$errno = mysql_errno($dbcon);
echo "[ERROR] : $errno : $error";
exit;
return false;
}else{
$STR_csv = "";
//#### 필드명(칼럼명) 추출하기
$field_Num = mysql_num_fields($sz);
$fieldNameAry = array();
for($i=0; $i<$field_Num; $i++){
$fN_01 = mysql_field_name($sz, $i);
$STR_csv = $STR_csv
. "<td>". $fN_01 . "</td>";
$fieldNameAry[] = $fN_01;
}//for
$STR_csv_TITLE = "<tr>". $STR_csv . "</tr>";
//#### 필드명(칼럼명) 추출하기
$beauty_gd = "\n";
unset($STR_csv_TR);
while($rows = mysql_fetch_array($sz)){
unset($STR_csv); //아~주 중요.
for( $j=0; $j<$field_Num; $j++){
$val = $fieldNameAry[$j];
$tmp_name = $$val = $rows[$val]; //$$val ........... 칼럼명
$STR_csv = $STR_csv
. "<td>". $rows[$val] . "</td>";
}//for............. ex> $mem = $rows[mem]; ....
##$STR_csv_TR .= "<tr>". $STR_csv . "</tr>" ;
$STR_csv_TR .= "<tr>". $STR_csv . "</tr>" . $beauty_gd;
}//while
$STR_csv_BODY = $STR_csv_TR;
unset($STR_csv);
$STR_csv = $STR_csv_TITLE . $STR_csv_BODY;
#$STR_csv = "<table border=1>". $STR_csv . "</table>";
$STR_csv = "<table border=1>". $beauty_gd. $STR_csv . "</table>". $beauty_gd;
#echo $STR_csv;
return $STR_csv;
return true;
}
}
?>
<?
######## 주의사항.............. make_csvFile() 이전에 어떤 표준출력도 있으면 안된다.
include_once "make_xls_csv.inc";
include_once "dbcon.inc";
$dbcon = COM_mysqlConnect( & $dbconn ); //Very Important
if( ! $table ){
$table = "M_Members";
}
$csv_sql = makeCSV_DBTable_Col_Values_Comment($dbcon, $table, $where);
#$csv_sql = makeCSV_DBTable_Col_Values($dbcon, $table, $where);
if( $csv_sql ){
$str = $csv_sql;
$saveFileName = "tmp_001_not.xls";
$t = make_csvFile($str, $saveFileName);
if( ! $t ){
echo "<p>엑셀파일로 저장하기 실패";
}else{
#echo "<p>성공적";
}
}else{
echo "<p>결과물이 없으므로, 엑셀파일로 저장하지 않습니다.";
}
?>
'인터넷정보' 카테고리의 다른 글
PHP로 사용용량, 남은용량 알아내기 (0) | 2007.10.16 |
---|---|
gd 추가하기 (0) | 2007.10.16 |
php 재컴파일시.. make distclean (0) | 2007.10.16 |
iconv 함수 사용가능토록 (0) | 2007.10.16 |
get_magic_quotes_gpc() (0) | 2007.10.16 |
session_save_path() 2 (0) | 2007.10.16 |
디렉토리..class.sh_dir_cls.inc (0) | 2007.10.16 |
파일업로드 삭제 클래스 (0) | 2007.10.16 |
문자열 내의 HTML 태그를 모두 없애는 방법 (0) | 2007.10.16 |
파일네임 금지 (0) | 2007.10.16 |