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

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

QA

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

답변 2

본문

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

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

 

기존 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을 불러올 수 있을까요 ㅠㅜ

답변을 작성하시기 전에 로그인 해주세요.
전체 1
© SIRSOFT
현재 페이지 제일 처음으로