메뉴개수 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
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
아니면 아예 로직을 바꾸던지 해야될것 같은데요
요새 ai 한테 물어보면 바로 답나와서 도움 받은게 좋을지도..
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;
}