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

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

QA

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

답변 2

본문

아래 소스를이용했는데 영카트 제품을 다운하면 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를 이용해 다운로드 하게 처리하시면 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 125,873
© SIRSOFT
현재 페이지 제일 처음으로