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

4개월 전 조회 1,951

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

Copy
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

Copy
$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개

채택된 답변
+20 포인트

아니면 아예 로직을 바꾸던지 해야될것 같은데요

요새 ai 한테 물어보면 바로 답나와서 도움 받은게 좋을지도..

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

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

 

adm/menu_form.php

Copy
// 코드

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

Copy
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;

 

    }
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

이거 커스텀하면 매번 반영해줘야 해서 귀찮을 듯....

차라리, https://sir.kr/g5_proposal 게시판에 정식으로 제안해 보시는 게.....

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고