누적 금액순으로 단골 고객 가져오기
안녕하세요 빗아입니다.
영카트 5.3.x 관리자 리뉴얼 해보면서 쇼핑몰 관리자 메인 만들다가 누적 구매 금액순으로 단골 고객 가져와 보았습니다.
필요하신 분들은 가져가서 쓰시면 될 거 같네요ㅎㅎ
css는 따로 안 올려드리니 만들어서 사용하시면 되겠습니다
[code]
<?php
function array_msort($array, $cols){ // 배열 재정열 함수
$colarr = array();
foreach ($cols as $col => $order) {
$colarr[$col] = array();
foreach ($array as $k => $row) { $colarr[$col]['_'.$k] = strtolower($row[$col]); }
}
$eval = 'array_multisort(';
foreach ($cols as $col => $order) {
$eval .= '$colarr[\''.$col.'\'],'.$order.',';
}
$eval = substr($eval,0,-1).');';
eval($eval);
$ret = array();
foreach ($colarr as $col => $arr) {
foreach ($arr as $k => $v) {
$k = substr($k,1);
if (!isset($ret[$k])) $ret[$k] = $array[$k];
$ret[$k][$col] = $array[$k][$col];
}
}
return array_values($ret);
}
?>
<p>단골 고객<span>(비회원은 포함되지 않습니다.)</span></p>
<table>
<tr>
<th>순위</th>
<th>회원 ID</th>
<th>이름</th>
<th>누적 주문</th>
<th>총 구매금액</th>
</tr>
<?php
$ranking = array();
$list = 0;
$sql = "select a.mb_id,a.od_cart_price,b.mb_name from {$g5['g5_shop_order_table']} a inner join {$g5['member_table']} b on a.mb_id = b.mb_id where a.od_status != '취소' and a.mb_id != ''"; // 주문상태 취소를 제외, 비회원 제외하고 불러옵니다.
$rs = sql_query($sql);
while($row = sql_fetch_array($rs)){
$search_key = array_search($row['mb_id'], array_column($ranking, 'mb_id'));
if($search_key > -1){
$ranking[$search_key]['price'] += $row['od_cart_price'];
$ranking[$search_key]['count'] += 1;
} else {
$ranking[$list]['mb_id'] = $row['mb_id'];
$ranking[$list]['mb_name'] = $row['mb_name'];
$ranking[$list]['price'] = $row['od_cart_price'];
$ranking[$list]['count'] = 1;
$list++;
}
}
$rank = array_msort($ranking, array('price'=>SORT_DESC)); // 배열 재정열
if(count($rank) > 7) $count = 7; // 출력 갯수
else $count = count($rank);
for($i=0; $i<$count; $i++){
?>
<tr>
<td><?php echo $i + 1;?></td>
<td><?=$rank[$i]['mb_id']?></td>
<td><?=$rank[$i]['mb_name']?></td>
<td><?=number_format($rank[$i]['count'])?><span>건</span></td>
<td><?=number_format($rank[$i]['price'])?><span>원</span></td>
</tr>
<?php } if($i == 0){?>
<tr>
<td colspan="50">아직 단골 고객이 없습니다.</td>
</tr>
<?php }?>
</table>
[/code]
영카트 5.3.x 관리자 리뉴얼 해보면서 쇼핑몰 관리자 메인 만들다가 누적 구매 금액순으로 단골 고객 가져와 보았습니다.
필요하신 분들은 가져가서 쓰시면 될 거 같네요ㅎㅎ
css는 따로 안 올려드리니 만들어서 사용하시면 되겠습니다
[code]
<?php
function array_msort($array, $cols){ // 배열 재정열 함수
$colarr = array();
foreach ($cols as $col => $order) {
$colarr[$col] = array();
foreach ($array as $k => $row) { $colarr[$col]['_'.$k] = strtolower($row[$col]); }
}
$eval = 'array_multisort(';
foreach ($cols as $col => $order) {
$eval .= '$colarr[\''.$col.'\'],'.$order.',';
}
$eval = substr($eval,0,-1).');';
eval($eval);
$ret = array();
foreach ($colarr as $col => $arr) {
foreach ($arr as $k => $v) {
$k = substr($k,1);
if (!isset($ret[$k])) $ret[$k] = $array[$k];
$ret[$k][$col] = $array[$k][$col];
}
}
return array_values($ret);
}
?>
<p>단골 고객<span>(비회원은 포함되지 않습니다.)</span></p>
<table>
<tr>
<th>순위</th>
<th>회원 ID</th>
<th>이름</th>
<th>누적 주문</th>
<th>총 구매금액</th>
</tr>
<?php
$ranking = array();
$list = 0;
$sql = "select a.mb_id,a.od_cart_price,b.mb_name from {$g5['g5_shop_order_table']} a inner join {$g5['member_table']} b on a.mb_id = b.mb_id where a.od_status != '취소' and a.mb_id != ''"; // 주문상태 취소를 제외, 비회원 제외하고 불러옵니다.
$rs = sql_query($sql);
while($row = sql_fetch_array($rs)){
$search_key = array_search($row['mb_id'], array_column($ranking, 'mb_id'));
if($search_key > -1){
$ranking[$search_key]['price'] += $row['od_cart_price'];
$ranking[$search_key]['count'] += 1;
} else {
$ranking[$list]['mb_id'] = $row['mb_id'];
$ranking[$list]['mb_name'] = $row['mb_name'];
$ranking[$list]['price'] = $row['od_cart_price'];
$ranking[$list]['count'] = 1;
$list++;
}
}
$rank = array_msort($ranking, array('price'=>SORT_DESC)); // 배열 재정열
if(count($rank) > 7) $count = 7; // 출력 갯수
else $count = count($rank);
for($i=0; $i<$count; $i++){
?>
<tr>
<td><?php echo $i + 1;?></td>
<td><?=$rank[$i]['mb_id']?></td>
<td><?=$rank[$i]['mb_name']?></td>
<td><?=number_format($rank[$i]['count'])?><span>건</span></td>
<td><?=number_format($rank[$i]['price'])?><span>원</span></td>
</tr>
<?php } if($i == 0){?>
<tr>
<td colspan="50">아직 단골 고객이 없습니다.</td>
</tr>
<?php }?>
</table>
[/code]
댓글 12개
jude1234
7년 전
오호 생각도 못했는데.. 적용해봐야겠네요
7년 전
감사합니다ㅎㅎ
BlueAngel
7년 전
php5.5 버전 이하의경우 array_column 함수가 없으니 만들어 줍니다.
if (! function_exists('array_column')) {
function array_column(array $input, $columnKey, $indexKey = null) {
$array = array();
foreach ($input as $value) {
if ( !array_key_exists($columnKey, $value)) {
trigger_error("Key \"$columnKey\" does not exist in array");
return false;
}
if (is_null($indexKey)) {
$array[] = $value[$columnKey];
}
else {
if ( !array_key_exists($indexKey, $value)) {
trigger_error("Key \"$indexKey\" does not exist in array");
return false;
}
if ( ! is_scalar($value[$indexKey])) {
trigger_error("Key \"$indexKey\" does not contain scalar value");
return false;
}
$array[$value[$indexKey]] = $value[$columnKey];
}
}
return $array;
}
}
46-47줄에 이름이 빠져있어서 입력
$ranking[$list]['mb_name'] = $row['mb_name'];
대강의 css적용을 위해 25줄을 아래처럼 변경
<link rel="stylesheet" href="<?php echo G5_ADMIN_URL; ?>/css/admin.css">
<div class="local_desc02 local_desc">
<p>단골 고객<span>(비회원은 포함되지 않습니다.)</span></p>
</div>
26줄 테이블을 div로 감싸주기
<div class="tbl_head01 tbl_wrap">
<table>
.
.
.
</table>
</div>
이럼 대강 모양까지 대~~~~충 잡히네요
[http://sir.kr/data/editor/1805/fe86201ab21ec03605c46a5971f87120_1527528270_44.png]
if (! function_exists('array_column')) {
function array_column(array $input, $columnKey, $indexKey = null) {
$array = array();
foreach ($input as $value) {
if ( !array_key_exists($columnKey, $value)) {
trigger_error("Key \"$columnKey\" does not exist in array");
return false;
}
if (is_null($indexKey)) {
$array[] = $value[$columnKey];
}
else {
if ( !array_key_exists($indexKey, $value)) {
trigger_error("Key \"$indexKey\" does not exist in array");
return false;
}
if ( ! is_scalar($value[$indexKey])) {
trigger_error("Key \"$indexKey\" does not contain scalar value");
return false;
}
$array[$value[$indexKey]] = $value[$columnKey];
}
}
return $array;
}
}
46-47줄에 이름이 빠져있어서 입력
$ranking[$list]['mb_name'] = $row['mb_name'];
대강의 css적용을 위해 25줄을 아래처럼 변경
<link rel="stylesheet" href="<?php echo G5_ADMIN_URL; ?>/css/admin.css">
<div class="local_desc02 local_desc">
<p>단골 고객<span>(비회원은 포함되지 않습니다.)</span></p>
</div>
26줄 테이블을 div로 감싸주기
<div class="tbl_head01 tbl_wrap">
<table>
.
.
.
</table>
</div>
이럼 대강 모양까지 대~~~~충 잡히네요
[http://sir.kr/data/editor/1805/fe86201ab21ec03605c46a5971f87120_1527528270_44.png]
7년 전
좋은정보 감사드립니다ㅎㅎ
$ranking[$list]['mb_name'] = $row['mb_name']; 추가 해놨습니다
$ranking[$list]['mb_name'] = $row['mb_name']; 추가 해놨습니다
codribble
7년 전
오 좋은 정보 감사합니다~!!
7년 전
감사합니다ㅎㅎ
7년 전
완전 초보가 문의 드립니다.
위 내용으로 페이지를 만들었습니다.
항목에 해당 회원등급과 최종접속일을 추가할려고 합니다.
$ranking[$list]['회원등급] = $row['회원등급'];
$ranking[$list]['최종접속일'] = $row['최종접속일'];
어떻게 불러오나요.
생초보가 여쭈어 봅니다
위 내용으로 페이지를 만들었습니다.
항목에 해당 회원등급과 최종접속일을 추가할려고 합니다.
$ranking[$list]['회원등급] = $row['회원등급'];
$ranking[$list]['최종접속일'] = $row['최종접속일'];
어떻게 불러오나요.
생초보가 여쭈어 봅니다
7년 전
$sql = "select a.mb_id,a.od_cart_price,b.mb_name from {$g5['g5_shop_order_table']} a inner join {$g5['member_table']} b on a.mb_id = b.mb_id where a.od_status != '취소' and a.mb_id != ''";
해당 부분을 아래와 같이 변경해주세요
$sql = "select * from {$g5['g5_shop_order_table']} a inner join {$g5['member_table']} b on a.mb_id = b.mb_id where a.od_status != '취소' and a.mb_id != ''";
해당 부분을 아래와 같이 변경해주세요
$sql = "select * from {$g5['g5_shop_order_table']} a inner join {$g5['member_table']} b on a.mb_id = b.mb_id where a.od_status != '취소' and a.mb_id != ''";
7년 전
감사합니다.
7년 전
능력이 부럽습니다
4년 전
감사요
1년 전
$sql = "select * from {$g5['g5_shop_order_table']} a inner join {$g5['member_table']} b on a.mb_id = b.mb_id where a.od_status != '취소' and a.mb_id != ''" and a.od_time >= '2024-01-01 00:00:00'";
추가해주면 특정기간 이후로 조회됩니다.
게시판 목록
영카트5 팁자료실
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 431 | 1개월 전 | 117 | ||
| 430 | 1개월 전 | 153 | ||
| 429 | 1개월 전 | 177 | ||
| 428 |
선택과집중
|
1개월 전 | 222 | |
| 427 |
선택과집중
|
2개월 전 | 377 | |
| 426 |
비버팩토리
|
2개월 전 | 349 | |
| 425 |
선택과집중
|
2개월 전 | 255 | |
| 424 |
선택과집중
|
2개월 전 | 383 | |
| 423 |
선택과집중
|
2개월 전 | 355 | |
| 422 |
선택과집중
|
3개월 전 | 321 | |
| 421 |
선택과집중
|
3개월 전 | 373 | |
| 420 | 3개월 전 | 409 | ||
| 419 |
선택과집중
|
3개월 전 | 352 | |
| 418 |
세르반데스
|
3개월 전 | 321 | |
| 417 |
선택과집중
|
3개월 전 | 405 | |
| 416 |
선택과집중
|
4개월 전 | 319 | |
| 415 |
선택과집중
|
4개월 전 | 355 | |
| 414 |
선택과집중
|
4개월 전 | 366 | |
| 413 |
선택과집중
|
4개월 전 | 452 | |
| 412 |
선택과집중
|
5개월 전 | 396 | |
| 411 |
선택과집중
|
5개월 전 | 305 | |
| 410 |
다케미카코
|
7개월 전 | 819 | |
| 409 |
다케미카코
|
7개월 전 | 573 | |
| 408 | 7개월 전 | 556 | ||
| 407 |
|
9개월 전 | 914 | |
| 406 | 10개월 전 | 1006 | ||
| 405 |
|
10개월 전 | 546 | |
| 404 | 1년 전 | 1260 | ||
| 403 | 1년 전 | 731 | ||
| 402 | 1년 전 | 765 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기