영카트 상품 리스트 엑셀 다운 문의

영카트 상품 리스트 엑셀 다운 문의

QA

영카트 상품 리스트 엑셀 다운 문의

본문

아래 소스를이용했는데 영카트 제품을 다운하면 DB에 제품 하나이상을 못가저 오는데 무엇이 문제일까요>

고수님들 조언 부탁드립니다.

감사합니다.

 


<?php
include_once('./_common.php');
auth_check($auth[$sub_menu], 'r');
$referer =  parse_url ( $_SERVER['HTTP_REFERER'] ) ;
parse_str( $referer['query'], $output);
foreach ($output as $key => $value) {
    ${$key} = $value;
}
$sql_common = " from {$g5['g5_shop_item_table']} a ,
                    {$g5['g5_shop_category_table']} b
              where (a.ca_id = b.ca_id";
if ($is_admin != 'super')
    $sql_common .= " and b.ca_mb_id = '{$member['mb_id']}'";
$sql_common .= ") ";
$sql_common .= $sql_search;
$sql = " SELECT * FROM g5_shop_item";
$result = sql_query($sql);
$row = sql_fetch($sql);
/* ================================= */
$type = 'csv'; //  comma-separated values, text 코마 구분 값 포맷의 파일
/* ================================= */
$file_alias ="itemlist_".date('Ymd').".{$type}";
header("Content-Type: application/vnd.ms-excel; charset=utf-8");
Header('Content-Disposition: attachment; filename=' . $file_alias);
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
Header('Pragma: no-cache');
Header('Expires: 0');
/* ================================= */

    $filedName = array(
"분류",
"상품코드",
"상품명",
"기본설명"
);
    $prtPattern = "";
    foreach($filedName as $val )  {
        $prtPattern .= ',"%s"';
    }
    $prtPattern = substr($prtPattern, 1)."\r\n";
echo "\xEF\xBB\xBF";
    vprintf($prtPattern, $filedName );
$filedValues = array(
 preg_replace('/[\"]/', '""', $row['ca_id'])
,preg_replace('/[\"]/', '""', $row['it_id'])
,preg_replace('/[\"]/', '""', $row['it_name'])
,preg_replace('/[\"]/', '""', $row['it_basic'])
        );
        vprintf($prtPattern, $filedValues );
?>

이 질문에 댓글 쓰기 :

답변 2

아래 코드를 참고하세요.


<?php
include_once('./_common.php');
auth_check($auth[$sub_menu], 'r');
// SQL쿼리수정
$sql = "SELECT * FROM {$g5['g5_shop_item_table']} a, {$g5['g5_shop_category_table']} b WHERE (a.ca_id = b.ca_id";
if ($is_admin != 'super') {
    $sql .= " and b.ca_mb_id = '{$member['mb_id']}'";
}
$sql .= ")";
$result = sql_query($sql);
// 파일설정
$type = 'csv';
$file_alias = "itemlist_" . date('Ymd') . ".{$type}";
header("Content-Type: application/vnd.ms-excel; charset=utf-8");
Header('Content-Disposition: attachment; filename=' . $file_alias);
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
Header('Pragma: no-cache');
Header('Expires: 0');
// 헤더행출력
$filedName = array("분류", "상품코드", "상품명", "기본설명");
$prtPattern = "";
foreach ($filedName as $val) {
    $prtPattern .= ',"%s"';
}
$prtPattern = substr($prtPattern, 1) . "\r\n";
echo "\xEF\xBB\xBF"; // BOMの出力
vprintf($prtPattern, $filedName);
// 데이타행출력
while ($row = sql_fetch_array($result)) {
    $filedValues = array(
        preg_replace('/[\"]/', '""', $row['ca_id']),
        preg_replace('/[\"]/', '""', $row['it_id']),
        preg_replace('/[\"]/', '""', $row['it_name']),
        preg_replace('/[\"]/', '""', $row['it_basic'])
    );
    vprintf($prtPattern, $filedValues);
}
?>
 

위의 중간 부분 쿼리를 보세요.


$row = sql_query($sql);

 

하나의 값만 가져오는 쿼리를 사용하고 있습니다.  여러 상품을 엑셀로 다운로드 하시려면 배열 $row를 foreach 문을 통해 모두 담은 다음 엑셀 파일로 exporting 하셔야 합니다.

하나의 액셀파일로 여러 상품을 담을 경우 빈 배열 변수를 하나 선언하시고 배열 결과값인 $row를 foreach문으로 돌려 엑셀 컬럼형식으로 코딩을 하고 header를 이용해 다운로드 하게 처리하시면 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 131
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT