함수? 스킨관련 질문좀 드리겠습니다.

함수? 스킨관련 질문좀 드리겠습니다.

QA

함수? 스킨관련 질문좀 드리겠습니다.

본문

안녕하세요 질문좀 드리겠습니다

 

https://sir.kr/yc5_tip/1567?sfl=wr_subject%7C%7Cwr_content&stx=od_cart_price

위스킨을보고  정상적으로 출력이 잘되고있는데요 

 

 

<th scope="col" id="mb_list_point"><?php echo subject_sort_link('mb_point', '', 'desc') ?> 주문금액</a></th>

 

 

이렇게 넣어놨는데 

문제는 클릭시 정렬을 하고싶은데요 mb_point 이부분을  od_cart_price 이렇게 변경해도 정렬이 안되는데 

정렬을 할수있는 방법이 있을까요~?

이 질문에 댓글 쓰기 :

답변 1

검색이나 정렬을 하려면 

우선 데이터 원본에 (from절) 데이터가 있어야 합니다. 

이런식이 되겠죠 

select mb_id, od_cart_price from 테이블 order by od_cart_price desc;

적용하신 방법은 

회원테이블을 쿼리해서 

출력하는 for문 안에 mb_id로 주문테이블을 다시 쿼리해서 값만 뽑아와 출력하므로

정렬이 안되는 것입니다

 

우선 수정하신 부분을 되돌리시고요

1.

https://github.com/gnuboard/gnuboard5/blob/master/adm/member_list.php#L7

$sql_common = " from {$g5['member_table']} ";

$sql_common = " from {$g5['member_table']} as mb ";

$sql_common .= " left join {$g5['g5_shop_order_table']} as od on od.od_status != '취소' and od.mb_id = mb.mb_id ";

 

2.

https://github.com/gnuboard/gnuboard5/blob/master/adm/member_list.php#L64

$sql = " select * {$sql_common} {$sql_search} {$sql_order} limit {$from_record}, {$rows} ";

$sql = " select mb.*, mb.mb_id as mb_id, sum(od.od_cart_price) as od_cart_price {$sql_common} {$sql_search} {$sql_order} limit {$from_record}, {$rows} ";

 

3.

이건 똑같이 써도 되고요

<?php echo subject_sort_link('od_cart_price', '', 'desc') ?>

 

4.

각 회원의 주문금액 출력은

<?php echo number_format($row['od_cart_price']); ?>

 

회원테이블과 주문테이블에 mb_id 똑같은 칼럼이 있어서 

1052 : Column 'mb_id' in where clause is ambiguous 에러가 나타날 수 있으니 주의

https://github.com/gnuboard/gnuboard5/blob/master/adm/member_list.php#L9-L28

where mb_id = 'test' // 이런 구문은 에러

where mb.mb_id = 'test' // 이렇게 

스위치문에 아래 case 추가해주면 좋겠지요?

switch ($stx) {

  case 'mb_id':

    $sql_search .= " (mb.mb_id = '{$stx}') ";

    break;

}

 

 

우선 답변주셔서 감사합니다.
4.

각 회원의 주문금액 출력은

<?php echo number_format($row['od_cart_price']); ?>

 

회원테이블과 주문테이블에 mb_id 똑같은 칼럼이 있어서

1052 : Column 'mb_id' in where clause is ambiguous 에러가 나타날 수 있으니 주의

https://github.com/gnuboard/gnuboard5/blob/master/adm/member_list.php#L9-L28

where mb_id = 'test' // 이런 구문은 에러

where mb.mb_id = 'test' // 이렇게

스위치문에 아래 case 추가해주면 좋겠지요?

switch ($stx) {

  case 'mb_id':

    $sql_search .= " (mb.mb_id = '{$stx}') ";

    break;

}

이부분은 이해를 못하겠습니다 ㅠㅠ
123번은 이해를 했는데 조금 쉽게 가능할까요 ㅠㅠ?부탁드리겠습니다.

4번은
https://github.com/gnuboard/gnuboard5/blob/master/adm/member_list.php#L148
for() 문에서
$row=sql_fetch_array($result);
$row 배열에 od_cart_price 키로 담겨있기 때문에
다른 $row['mb_name'] 이런것들과 마찬가지로
그냥 출력하면 되는 거고요
$row['od_cart_price']
처음 수정하셨을 때는
$row3 배열에 담았잖아요? $row3['od_cart_price']
처음 따라하셨는 팁의
적절한 위치에 금액을 출력합니다.
이 부분이이에요

주의사항은
https://github.com/gnuboard/gnuboard5/blob/master/adm/member_list.php#L12
이 스위치문 바로 아래
  case 'mb_id':
    $sql_search .= " (mb.mb_id = '{$stx}') ";
    break;
세 줄 추가해주세요
where mb_id = 'test' 쿼리하면
회원/주문테이블에 똑같은 mb_id 칼럼이 있어서
sql문이 처리를 못하는 거에요 어떤 걸 말하는지 몰라서
ambiguous: 애매모호한
그래서
from 회원테이블 as mb 라고 알리아스해서
회원테이블의 mb_id 라고 알려주는 것이지요

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

회원로그인

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