테스트 사이트 - 개발 중인 베타 버전입니다

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

위젯마스터 2개월 전 조회 1,393

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

</p>

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

<p><code>

 

adm/menu_list_update.php

</span></font></p>

<p> </p>

<p>    $sub_code = '';</p>

<p>    if ($group_code == $code) {</p>

<p>        $sql = " select MAX(SUBSTRING(me_code,3,2)) as max_me_code</p>

<p>                    from {$g5['menu_table']}</p>

<p>                    where SUBSTRING(me_code,1,2) = '$primary_code' ";</p>

<p>        $row = sql_fetch($sql);</p>

<p> </p>

<p>        $sub_code = (int)base_convert($row['max_me_code'], 36, 10);</p>

<p>        $sub_code += 36;</p>

<p>        $sub_code = base_convert((string)$sub_code, 10, 36);</p>

<p> </p>

<p>        $me_code = $primary_code . $sub_code;</p>

<p>    } else {</p>

<p>        $sql = " select MAX(SUBSTRING(me_code,1,2)) as max_me_code</p>

<p>                    from {$g5['menu_table']}</p>

<p>                    where LENGTH(me_code) = '2' ";</p>

<p>        $row = sql_fetch($sql);</p>

<p> </p>

<p>        $me_code = (int)base_convert($row['max_me_code'], 36, 10);</p>

<p>        $me_code += 36;</p>

<p>        $me_code = base_convert((string)$me_code, 10, 36);</p>

<p> </p>

<p>        $group_code = $code;</p>

<p>        $primary_code = $me_code;</p>

<p>    }</p>

<p><font face="monospace"><span style="font-size: 11.375px;">

 

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

답변 3개

채택된 답변
+20 포인트
2개월 전

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

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

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

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

2개월 전

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

 

adm/menu_form.php

</p>

<p>// 코드</p>

<p>if ($new == 'new' || !$code) {</p>

<p>    // $code = (int)base_convert(substr($code, 0, 2), 36, 10);</p>

<p>    // $code += 36;</p>

<p>    // $code = base_convert((string)$code, 10, 36);</p>

<p> </p>

<p>    // 1차 메뉴 코드 생성 (예시: 2자리 숫자 형식)</p>

<p>    $code = (int)substr($code, 0, 2);</p>

<p>    $code += 1;</p>

<p>    $code = str_pad($code, 2, '0', STR_PAD_LEFT); // 항상 2자리로 유지</p>

<p>}</p>

<p>

 

adm/menu_list_update.php

</p>

<p>    if ($group_code == $code) {</p>

<p>        $sql = " select MAX(SUBSTRING(me_code,3,2)) as max_me_code</p>

<p>                    from {$g5['menu_table']}</p>

<p>                    where SUBSTRING(me_code,1,2) = '$primary_code' ";</p>

<p>        $row = sql_fetch($sql);</p>

<p>        // $sub_code = (int)base_convert($row['max_me_code'], 36, 10);</p>

<p>        // $sub_code += 36;</p>

<p>        // $sub_code = base_convert((string)$sub_code, 10, 36);</p>

<p> </p>

<p>        // $me_code = $primary_code . $sub_code;</p>

<p> </p>

<p>        // 36진수 대신 10진수로 다룸</p>

<p>        $sub_code = (int)$row['max_me_code'];</p>

<p>        $sub_code += 1;</p>

<p>        $sub_code = str_pad($sub_code, 2, '0', STR_PAD_LEFT); // 항상 2자리로 유지</p>

<p> </p>

<p>        $me_code = $primary_code . $sub_code;</p>

<p> </p>

<p>    } else {</p>

<p>        $sql = " select MAX(SUBSTRING(me_code,1,2)) as max_me_code</p>

<p>                    from {$g5['menu_table']}</p>

<p>                    where LENGTH(me_code) = '2' ";</p>

<p>        $row = sql_fetch($sql);</p>

<p> </p>

<p>        // $me_code = (int)base_convert($row['max_me_code'], 36, 10);</p>

<p>        // $me_code += 36;</p>

<p>        // $me_code = base_convert((string)$me_code, 10, 36);</p>

<p> </p>

<p>        // $group_code = $code;</p>

<p>        // $primary_code = $me_code;</p>

<p> </p>

<p>        // 36진수 대신 10진수로 다룸</p>

<p>        $me_code = (int)$row['max_me_code'];</p>

<p>        $me_code += 1;</p>

<p>        $me_code = str_pad($me_code, 2, '0', STR_PAD_LEFT); // 항상 2자리로 유지</p>

<p>       </p>

<p>        $group_code = $code;</p>

<p>        $primary_code  = $me_code;</p>

<p> </p>

<p>    }</p>

<p>

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

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

s
sinbi Expert
2개월 전

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

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

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

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

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

로그인