메뉴개수 36개 이상 추가하는방법이 있을까요?

메뉴개수 36개 이상 추가하는방법이 있을까요?

QA

메뉴개수 36개 이상 추가하는방법이 있을까요?

본문

1차 메뉴 생성 형태가 10,20 ~ a0,b0,z0 이후 100으로 계속 생성됩니다. 즉, 36개 이상 생성시 오류가 발생합니다.

기존 자료를 찾아보니 아래와 같은 코드에서 $code +=36 을 $code +=1로 변경하면 이론적으로 가능하다고 하였으나, 변경 후 테스트해보면 동일하게 36개 이후 100번으로 생성됩니다. (menu_for.php 와 menu_list_update.php의 코드에서 모두 수정해봄)

 

36개 이상 생성 할 수 있는 방법에 대해 고수님들의 조언을 부탁드립니다. 이건 그누보드 자체적으로 수정되어야 할 사항으로 판단됩니다.

 

https://sir.kr/qa/153616

 

adm/menu_form.php



if($new == 'new' || !$code) {
    $code = base_convert(substr($code,0, 2), 36, 10);
    $code += 36;
    $code = base_convert($code, 10, 36);
}

 

adm/menu_list_update.php


 
    $sub_code = '';
    if ($group_code == $code) {
        $sql = " select MAX(SUBSTRING(me_code,3,2)) as max_me_code
                    from {$g5['menu_table']}
                    where SUBSTRING(me_code,1,2) = '$primary_code' ";
        $row = sql_fetch($sql);
 
        $sub_code = (int)base_convert($row['max_me_code'], 36, 10);
        $sub_code += 36;
        $sub_code = base_convert((string)$sub_code, 10, 36);
 
        $me_code = $primary_code . $sub_code;
    } else {
        $sql = " select MAX(SUBSTRING(me_code,1,2)) as max_me_code
                    from {$g5['menu_table']}
                    where LENGTH(me_code) = '2' ";
        $row = sql_fetch($sql);
 
        $me_code = (int)base_convert($row['max_me_code'], 36, 10);
        $me_code += 36;
        $me_code = base_convert((string)$me_code, 10, 36);
 
        $group_code = $code;
        $primary_code = $me_code;
    }

 

이 질문에 댓글 쓰기 :

답변 3

ChatGPT를 통해 해결했습니다. 정답은 아래와 같습니다.

 

adm/menu_form.php


// 코드
if ($new == 'new' || !$code) {
    // $code = (int)base_convert(substr($code, 0, 2), 36, 10);
    // $code += 36;
    // $code = base_convert((string)$code, 10, 36);
 
    // 1차 메뉴 코드 생성 (예시: 2자리 숫자 형식)
    $code = (int)substr($code, 0, 2);
    $code += 1;
    $code = str_pad($code, 2, '0', STR_PAD_LEFT); // 항상 2자리로 유지
}

 

adm/menu_list_update.php


    if ($group_code == $code) {
        $sql = " select MAX(SUBSTRING(me_code,3,2)) as max_me_code
                    from {$g5['menu_table']}
                    where SUBSTRING(me_code,1,2) = '$primary_code' ";
        $row = sql_fetch($sql);
        // $sub_code = (int)base_convert($row['max_me_code'], 36, 10);
        // $sub_code += 36;
        // $sub_code = base_convert((string)$sub_code, 10, 36);
 
        // $me_code = $primary_code . $sub_code;
 
        // 36진수 대신 10진수로 다룸
        $sub_code = (int)$row['max_me_code'];
        $sub_code += 1;
        $sub_code = str_pad($sub_code, 2, '0', STR_PAD_LEFT); // 항상 2자리로 유지
 
        $me_code = $primary_code . $sub_code;
 
    } else {
        $sql = " select MAX(SUBSTRING(me_code,1,2)) as max_me_code
                    from {$g5['menu_table']}
                    where LENGTH(me_code) = '2' ";
        $row = sql_fetch($sql);
 
        // $me_code = (int)base_convert($row['max_me_code'], 36, 10);
        // $me_code += 36;
        // $me_code = base_convert((string)$me_code, 10, 36);
 
        // $group_code = $code;
        // $primary_code = $me_code;
 
        // 36진수 대신 10진수로 다룸
        $me_code = (int)$row['max_me_code'];
        $me_code += 1;
        $me_code = str_pad($me_code, 2, '0', STR_PAD_LEFT); // 항상 2자리로 유지
       
        $group_code = $code;
        $primary_code  = $me_code;
 
    }
답변을 작성하시기 전에 로그인 해주세요.
전체 129,672 | RSS
QA 내용 검색

회원로그인

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