주문내역 리스트에서 엑셀다운 작업중인데요.

주문내역 리스트에서 엑셀다운 작업중인데요.

QA

주문내역 리스트에서 엑셀다운 작업중인데요.

본문

편법으루다가 '준비' 상태에서 노출되는 '엑셀배송처리' 부분을 이용해서

'입금'과 '준비' 상태의 모든 주문내역을 출력하도록 작업중인데요.

 

기존 10개(10개였나 ㄷㄷㄷㄷ)에서 추가 구분을 넣어서 현재 엑셀 다운로드시

총 21개 구분의 내용이 출력되도록 설정했습니다.

(물론 이 파일 이대로 택배사,운송장번호 입력해서 업로드하면 일괄등록 되는걸로 ㄷㄷㄷㄷ)

 

요렇게 말이죠 ㅎㅎ

416f8ecd8b1e769e7d858a393cf4d5be_1476955459_498.jpg
 

그런데 보시다시피 상품명,옵션,수량은 아무리 노력해도 출력이 안되네요 ㅠㅜ (2시간 넘게 삽질중)

 

줄 수가 많지 않으니 orderdeliveryexcel.php 파일의 내용을 보여드리자면


<?php
$sub_menu = '400400';
include_once('./_common.php');
 
auth_check($auth[$sub_menu], "w");
 
// 주문정보
$sql = " select *
            from {$g5['g5_shop_order_table']}
            where od_misu = '0'
              and od_status = ('준비'&&'입금')
            order by od_id desc ";
$result = sql_query($sql);
 
if(!@sql_num_rows($result))
    alert_close('배송처리할 주문 내역이 없습니다.');
 
/*================================================================================
php_writeexcel http://www.bettina-attack.de/jonny/view.php/projects/php_writeexcel/
=================================================================================*/
 
include_once(G5_LIB_PATH.'/Excel/php_writeexcel/class.writeexcel_workbook.inc.php');
include_once(G5_LIB_PATH.'/Excel/php_writeexcel/class.writeexcel_worksheet.inc.php');
 
$fname = tempnam(G5_DATA_PATH, "tmp-deliverylist.xls");
$workbook = new writeexcel_workbook($fname);
$worksheet = $workbook->addworksheet();
 
 
// Put Excel data
$data = array('주문번호', '주문자명', '주문자전화1', '주문자전화2', '상품명', '선택옵션', '수량', '배송메시지', '수취인명', '수취인전화1', '수취인전화2', '우편번호', '배송지주소', '상품가격', '배송비', '포인트결재', '쿠폰결재', '실결제금액', '결제수단', '배송회사', '운송장번호');
$data = array_map('iconv_euckr', $data);
 
$col = 0;
foreach($data as $cell) {
    $worksheet->write(0, $col++, $cell);
}
 
for($i=1; $row=sql_fetch_array($result); $i++) {
    $row = array_map('iconv_euckr', $row);
 
    $worksheet->write($i, 0, ' '.$row['od_id']);
    $worksheet->write($i, 1, $row['od_name']);
    $worksheet->write($i, 2, ' '.$row['od_tel']);
    $worksheet->write($i, 3, ' '.$row['od_hp']);
	$worksheet->write($i, 4, ' '.$row['it_name']); //상품명
	$worksheet->write($i, 5, ' '.$row['ct_option']); //옵션
	$worksheet->write($i, 6, ' '.$row['ct_qty']); //수량
	$worksheet->write($i, 7, ' '.$row['od_memo']);
    $worksheet->write($i, 8, $row['od_b_name']);
    $worksheet->write($i, 9, ' '.$row['od_b_tel']);
    $worksheet->write($i, 10, ' '.$row['od_b_hp']);
	$worksheet->write($i, 11, ' '.$row['od_b_zip1'].$row['od_b_zip2']);
    $worksheet->write($i, 12, print_address($row['od_b_addr1'], $row['od_b_addr2'], $row['od_b_addr3'], $row['od_b_addr_jibeon']));
	$worksheet->write($i, 13, ' '.number_format($row['od_cart_price']));
	$worksheet->write($i, 14, ' '.number_format($row['od_send_cost']));
	$worksheet->write($i, 15, ' '.number_format($row['od_receipt_point']));
	$worksheet->write($i, 16, ' '.number_format($row['od_coupon']));
	$worksheet->write($i, 17, ' '.number_format($row['od_receipt_price']));
	$worksheet->write($i, 18, ' '.$row['od_settle_case']);
    $worksheet->write($i, 19, $row['od_delivery_company']);
    $worksheet->write($i, 20, $row['od_invoice']);
}
 
$workbook->close();
 
header("Content-Type: application/x-msexcel; name=\"주문내역_".date("ymd", time()).".xls\"");
header("Content-Disposition: inline; filename=\"주문내역_".date("ymd", time()).".xls\"");
$fh=fopen($fname, "rb");
fpassthru($fh);
unlink($fname);
?>

요렇게 되어있습니다.
문제의 상품명 출력부분은 당연히 상품명이니까 $row['it_name'] 하면 나올줄 알았더니 안나오고
옵션도 ct_option, 수량은 ct_qty 를 입력해도 출력이 안됩니다. ㅠㅠ

어디가 잘못된걸까요?
(해당 부분은 orderprintresult.php 파일을 토대로 작성했습니다.)

굇수님들의 속시원한 해결책을 간절히 기다려봅니다.

부탁드립니다. 넙죽~!! (__+

이 질문에 댓글 쓰기 :

답변 2

for($i=1; $row=sql_fetch_array($result); $i++) { 

// 아래에 $od_Id 이용 장바구니 상품명 쿼리 후 관련 처리 추가 - 상황별 조건 변경 - 하나의 주문번호에 여러 상품 구매 가능하니  

$it_row = sql_fetch("select * from g5['g5_shop_cart_table']} where od_id = '{$row['od_id']}' and io_type = '0' order by ct_id asc limit 1)"; 

 echo $it_row['it_name'];

내용 추가 후 체크 해 보세요.


상세한 설명 감사드립니다.
답변을 채 확인하기도 전에 다른 방법으로 해결했습니다. ^^

9라인의 쿼리문을 노가다로 처리했습니다. ㅎ


$sql = " SELECT a.od_id, od_b_zip1, od_b_zip2, od_b_addr1, od_b_addr2, od_b_addr3, od_b_addr_jibeon, od_b_name, od_b_tel, od_b_hp, od_tel, od_name, od_hp, od_cart_count, od_cart_price, od_send_cost, od_receipt_point, od_receipt_price, od_settle_case, od_delivery_company, od_invoice, b.it_name, ct_qty, b.it_id, a.od_id, od_memo, od_invoice, b.ct_option, b.ct_send_cost, b.it_sc_type
               FROM {$g5['g5_shop_order_table']} a, {$g5['g5_shop_cart_table']} b
              where (a.od_id = b.od_id) and (od_misu = '0')
              and od_status = ('준비'&&'입금')
            order by od_id desc ";


orderprintresult.php 파일을 참조해서 일일히 각 테이블에 누락된 컬럼만 추가해서
출력에 성공했습니다. ㅎㅎ ^^ (다.. 단순한 뇌회전 ㅠㅜ)

이제 마지막 숙제는 배송사와 운송장 번호를 기록해서 업로드했을때 정상적으로 처리되느냐가
관건이네요. ㄷㄷㄷㄷㄷ

9행 sql ... 우선 확인

 

위 소스에서 $row는 order_table 주문정보만 담고 있음

상품명 등은 cart_table 에 있으니 od_id 이용 추가 쿼리 작성 필요 

답변감사합니다. ㅎㅎ 저도 아침에 뭔잘못을 했나 하고 살펴보다가 맨위 쿼리문에서 order_table만 불러온걸 보게 되었습니다.
컬럼들을 찾아보니 상품명이나 옵션명은 안보이더라구요. (다행히 수량 컬럼은 찾아서 적용시켰더니 바로 되었습니다.)

당연히 cart_table 정보를 불러와야 it_name, ct_option의 컬럼내용이 출력이 된다는걸 알겠는데

위 쿼리문에서 어떻게 수정해야 cart_table을 불러올 수 있을까요 ㅠㅜ

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

회원로그인

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