회원 목록을 불러오는 코딩을 하려고 합니다.
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 7.3 |
{@
// 데이터베이스 인스턴스 가져오기
$oDB = &DB::getInstance();
// group_srl이 479인 회원 정보 가져오기
$query = $oDB->_query('select xe_member.* from xe_member inner join xe_member_group_member on xe_member.member_srl = xe_member_group_member.member_srl where xe_member_group_member.group_srl = 479');
$members = $oDB->_fetch($query);
// 그룹 정보 가져오기
$oMemberModel = getModel('member');
$group_info = $oMemberModel->getGroup(479);
}
<!--@if($logged_info->is_admin=='Y')-->
<div class="member-list-container">
<h3>{$group_info->title} 그룹 회원 목록</h3>
<!--@if($members && count($members) > 0)-->
<p>총 <strong>{count($members)}</strong>명의 회원이 있습니다.</p>
<table class="member-list">
<thead>
<tr>
<th>번호</th>
<th>아이디</th>
<th>이름</th>
<th>닉네임</th>
<th>이메일</th>
<th>가입일</th>
</tr>
</thead>
<tbody>
<!--@foreach($members as $no => $member)-->
<tr>
<td>{$no+1}</td>
<td>{$member->user_id}</td>
<td>{$member->user_name}</td>
<td>{$member->nick_name}</td>
<td>{$member->email_address}</td>
<td>{zdate($member->regdate, "Y-m-d H:i")}</td>
</tr>
<!--@end-->
</tbody>
</table>
<!--@else-->
<p>그룹에 속한 회원이 없습니다.</p>
<!--@end-->
</div>
<!--@else-->
<p>관리자만 접근 가능합니다.</p>
<!--@end-->
ai에게 물어봐서 특정 그룹(479)의 목록을 리스팅하는 것은 성공했습니다.
여기 상단에 검색창으로 넣고 이름 / 닉네임 / 이메일 중에 하나 일치하는 값이 있으면 출력하도록 하고 싶은데
ai를 2시간 괴롭히고 있는데 템플릿 문법과 계속 충돌이 나면서 해결이 되지 않고 있어요.
쉽게 할 수 있는 방법 없을까요?
댓글 4
{@
// 데이터베이스 인스턴스 가져오기
$oDB = &DB::getInstance();
// 검색 파라미터 가져오기
$search_keyword = Context::get('search_keyword');
// 초기 로드인지 검색인지 구분
$is_search = $search_keyword !== null; // 파라미터가 존재하면 검색 시도로 간주
// 쿼리 생성
$query_str = 'select xe_member.*
from xe_member
inner join xe_member_group_member
on xe_member.member_srl = xe_member_group_member.member_srl
where xe_member_group_member.group_srl = 479';
// 검색어가 있으면 조건 추가
if($search_keyword && trim($search_keyword) !== ''):
$query_str .= " AND xe_member.user_name LIKE '%" . $search_keyword . "%'";
endif;
// 쿼리 실행
$query = $oDB->_query($query_str);
$members = array();
// 결과를 배열로 가져오기
while($row = $oDB->_fetch($query)):
$members[] = $row;
endwhile;
// 결과 디버깅
$member_count = count($members);
$first_member_srl = '';
$first_member_userid = '';
$first_member_name = '';
// 첫 번째 회원 정보 추출
if($member_count > 0):
$first_member = $members[0];
$first_member_srl = $first_member->member_srl;
$first_member_userid = $first_member->user_id;
$first_member_name = $first_member->user_name;
endif;
// 그룹 정보 가져오기
$oMemberModel = getModel('member');
$group_info = $oMemberModel->getGroup(3416);
}
<div class="space_top"></div>
<div class="responsive_card">
<!-- 디버깅 정보 -->
<div style="background-color: #f8f9fa; border: 1px solid #ddd; padding: 10px; margin-bottom: 15px;">
<h4>디버깅 정보</h4>
<p>검색 요청: {$is_search ? '예' : '아니오'}</p>
<p>검색어: {$search_keyword ? $search_keyword : '없음'}</p>
<p>검색된 회원 수: {$member_count}</p>
<!--@if($member_count > 0)-->
<p>첫 번째 회원 번호: {$first_member_srl}</p>
<p>첫 번째 회원 ID: {$first_member_userid}</p>
<p>첫 번째 회원 이름: {$first_member_name}</p>
<!--@end-->
</div>
<!--@if($logged_info->is_admin=='Y')-->
<div class="member-list-container">
<h3>{$group_info->title} 그룹 회원 목록</h3>
<!-- 검색 폼 추가 -->
<div class="search-form" style="margin-bottom: 15px;">
<form action="{getUrl()}" method="get">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="{$act}" />
<input type="text" name="search_keyword" value="{$search_keyword}" placeholder="이름으로 검색" style="width: 200px; padding: 5px;" />
<button type="submit" style="padding: 5px 10px; background-color: #4a89dc; color: white; border: none; cursor: pointer;">검색</button>
<!--@if($search_keyword)-->
<a href="{getUrl('search_keyword', '')}" style="margin-left: 5px; padding: 5px 10px; background-color: #ddd; color: #333; text-decoration: none;">초기화</a>
<!--@end-->
</form>
</div>
<!--@if($member_count > 0)-->
<p>총 <strong>{$member_count}</strong>명의 회원이 있습니다.</p>
<table class="member-list">
<thead>
<tr>
<th>번호</th>
<th>아이디</th>
<th>이름</th>
<th>닉네임</th>
<th>이메일</th>
<th>가입일</th>
</tr>
</thead>
<tbody>
<!--@foreach($members as $no => $member)-->
<tr>
<td>{$no+1}</td>
<td>{$member->user_id}</td>
<td>{$member->user_name}</td>
<td>{$member->nick_name}</td>
<td>{$member->email_address}</td>
<td>{zdate($member->regdate, "Y-m-d H:i")}</td>
</tr>
<!--@end-->
</tbody>
</table>
<!--@else-->
<p>그룹에 속한 회원이 없거나 검색 결과가 없습니다.</p>
<!--@end-->
</div>
<!--@else-->
<p>관리자만 접근 가능합니다.</p>
<!--@end-->
</div>
이렇게 해봤는데, (ai가 시켜서)
이렇게 하니까 검색값은 잘 나오는데 검색값이 없을때 전체 목록이 나오질 않네요 ㅠ.ㅠ
AI가 SQL 인젝션을 시키는군요. ㄷㄷㄷ
그것이 무엇이옵니까. 제미나이 chatgpt 클로드 돌아가면서 갈구고 있는데 ai가 라이믹스 템플릿 문법을 너무 모르옵니다 ㅠㅠ 도와주시옵소서
검색했을 때 잘 나온다면 일단 기본적인 쿼리와 루프문, html 출력하는 부분은 작동한다는 뜻인데
검색하지 않았을 때 안 나온다...
이건 그냥 회원이 너무 많아서 그럴 수도 있습니다.
해당 그룹(479)에 소속된 회원 수가 대충 몇 명쯤 되나요?