특정 그룹 게시판명 및 상단 추출
본문
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 특정 그룹의 게시판 리스트를 알파벳 순으로 조회
$group_id = 'artist'; // 그룹 ID를 지정해주세요 (예: 'group1')
$sql = "SELECT bo_table, bo_subject FROM {$g5['board_table']} WHERE bo_group = '$group_id' ORDER BY bo_subject ASC";
$result = sql_query($sql);
// 게시판 리스트 출력
if (sql_num_rows($result) > 0) {
echo '<ul>';
while ($row = sql_fetch_array($result)) {
echo '<li><a href="' . G5_BBS_URL . '/board.php?bo_table=' . $row['bo_table'] . '">' . $row['bo_subject'] . '</a></li>';
}
echo '</ul>';
} else {
echo '게시판이 없습니다.';
}
?>
게시판마다 상단이미지를 넣었는데요
artist라는 그룹을 만들고 그 안에 해당 그룹내 게시판을 다 가지고 오려고 하는데 위에 소스로 작업했습니다.
그런데 표기가 안되네요 ㅠㅠ
뭐가 문제일까요?
답변 1
*bo_group 컬럼이 존재하는지 확인하고 없으면 추가하거나 JOIN을 사용
*$g5['board_table'] 변수가 정상적으로 설정되었는지 확인
*SQL Injection을 방지하기 위해 sql_escape_string()을 사용
*sql_num_rows() 대신 sql_fetch_array()를 이용하여 데이터를 확인
※ 유력한 문제 ※
*1. 현재 SQL 쿼리에서는
$sql = "SELECT bo_table, bo_subject FROM {$g5['board_table']} WHERE bo_group = '$group_id' ORDER BY bo_subject ASC";
와 같이 bo_group 컬럼을 기준으로 데이터를 조회하고 있습니다.
그러나 그누보드5의 기본 테이블 구조에서는
게시판 그룹을 관리하는 컬럼명이 보통 gr_id로 되어 있습니다.
다시 말해, 등록된 게시판의 그룹 정보가 gr_id에 저장되어 있다면,
조건문에서 bo_group을 사용하면 일치하는 데이터가 없으므로 조회 결과가 없게 됩니다.
- 테이블 구조를 확인하여 실제 그룹 식별값이 저장된 컬럼명을 파악한 후, 아래와 같이 수정
$sql = "SELECT bo_table, bo_subject FROM {$g5['board_table']} WHERE gr_id = '$group_id' ORDER BY bo_subject ASC";
>>만약 별도의 그룹 테이블을 사용하고 있다면 JOIN을 통해 데이터를 가져와야 합니다.
*2. 상단이미지 출력 코드 보완 -
제공된 코드는 게시판 제목과 링크를 리스트로 출력하는데,
실제 “상단이미지”를 출력하는 로직은 포함되어 있지 않습니다.
만약 각 게시판마다 상단이미지 정보(이미지 파일 경로)를 저장해두셨다면,
해당 필드를 같이 조회한 후 <img> 태그를 사용해 출력해야 합니다.
>>예를 들어, 만약 상단이미지 정보가 bo_head_img 라는 컬럼에 저장되어 있다면:
$sql = "SELECT bo_table, bo_subject, bo_head_img FROM {$g5['board_table']} WHERE gr_id = '$group_id' ORDER BY bo_subject ASC";
$result = sql_query($sql);
if ($row = sql_fetch_array($result)) {
echo '<ul>';
do {
// 상단이미지가 있을 경우 이미지 태그를 출력
if ($row['bo_head_img']) {
echo '<li><img src="' . $row['bo_head_img'] . '" alt="' . $row['bo_subject'] . ' 상단이미지">';
} else {
echo '<li>';
}
echo '<a href="' . G5_BBS_URL . '/board.php?bo_table=' . $row['bo_table'] . '">' . $row['bo_subject'] . '</a></li>';
} while ($row = sql_fetch_array($result));
echo '</ul>';
} else {
echo '게시판이 없습니다.';
}
이처럼 상단이미지 관련 필드를 함께 조회하고 출력하는 방식으로 수정해야,
원하는 상단이미지의 표기를 얻을 수 있지 않나 싶습니다!