메뉴개수 36개 이상 추가하는방법이 있을까요? 채택완료
1차 메뉴 생성 형태가 10,20 ~ a0,b0,z0 이후 100으로 계속 생성됩니다. 즉, 36개 이상 생성시 오류가 발생합니다.
기존 자료를 찾아보니 아래와 같은 코드에서 $code +=36 을 $code +=1로 변경하면 이론적으로 가능하다고 하였으나, 변경 후 테스트해보면 동일하게 36개 이후 100번으로 생성됩니다. (menu_for.php 와 menu_list_update.php의 코드에서 모두 수정해봄)
36개 이상 생성 할 수 있는 방법에 대해 고수님들의 조언을 부탁드립니다. 이건 그누보드 자체적으로 수정되어야 할 사항으로 판단됩니다.
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개
댓글을 작성하려면 로그인이 필요합니다.
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>
댓글을 작성하려면 로그인이 필요합니다.
이거 커스텀하면 매번 반영해줘야 해서 귀찮을 듯....
차라리, https://sir.kr/g5_proposal 게시판에 정식으로 제안해 보시는 게.....
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인