prepare("CALL proc_get_code_list('CA100')");
$catsStmt->execute();
$categories = $catsStmt->fetchAll();
$catsStmt->closeCursor();
// 분기(quarter) 목록을 edu_codes 에서 desc01 기준으로 조회합니다.
// desc01 = 'CA10001' 인 코드들을 분기 코드로 사용합니다.
$qtStmt = $pdo->prepare("SELECT base_code AS code, code_name AS name FROM edu_codes WHERE desc01 = 'CA10001'");
$qtStmt->execute();
$quarters = $qtStmt->fetchAll(PDO::FETCH_ASSOC);
$qtStmt->closeCursor();
// 키워드(KW100) 목록을 프로시저를 통해 DB에서 조회합니다.
$keywordsStmt = $pdo->prepare("CALL proc_get_code_list('KW100')");
$keywordsStmt->execute();
$keywords = $keywordsStmt->fetchAll(PDO::FETCH_ASSOC);
$keywordsStmt->closeCursor();
$goalNosStmt = $pdo->prepare("CALL proc_get_code_list('GN100')");
$goalNosStmt->execute();
$goalNos = $goalNosStmt->fetchAll(PDO::FETCH_ASSOC);
$goalNosStmt->closeCursor();
// 인사이트 이슈구분(IS100) 목록을 사전 준비합니다.
$is100Stmt = $pdo->prepare("CALL proc_get_code_list('IS100')");
$is100Stmt->execute();
$issueTypesIS = $is100Stmt->fetchAll(PDO::FETCH_ASSOC);
$is100Stmt->closeCursor();
// 리더십 이슈구분(LD100) 목록을 사전 준비합니다.
$ld100Stmt = $pdo->prepare("CALL proc_get_code_list('LD100')");
$ld100Stmt->execute();
$issueTypesLD = $ld100Stmt->fetchAll(PDO::FETCH_ASSOC);
$ld100Stmt->closeCursor();
// 기본 선택될 카테고리 코드를 결정합니다. '마이클래스'를 찾으면 우선 적용합니다.
$defaultCatCode = null;
foreach ($categories as $c) {
if ($c['name'] === '마이클래스') {
$defaultCatCode = $c['code'];
break;
}
}
// '마이클래스'가 없으면 첫 번째 카테고리를 기본값으로 사용합니다.
if ($defaultCatCode === null && count($categories) > 0) {
$defaultCatCode = $categories[0]['code'];
}
// GET 파라미터로 넘겨받은 검색 조건(카테고리, 검색어)을 변수에 저장합니다.
$category = isset($_GET['category']) ? $_GET['category'] : 'CA10006';
$q = isset($_GET['q']) ? trim($_GET['q']) : '';
// 쿼리 바인딩을 위한 파라미터 배열과 WHERE 조건 배열을 초기화합니다.
$params = [];
$where = [];
// 카테고리 검색 조건이 '전체'가 아닐 경우 조건절에 추가합니다.
if ($category !== '' && $category !== '전체') {
$where[] = 'category_code = :category';
$params[':category'] = $category;
}
// 텍스트 검색어가 있을 경우 제목(title) 부분 일치 조건(LIKE)을 추가합니다.
if ($q !== '') {
$where[] = 'title LIKE :q';
$params[':q'] = '%' . $q . '%';
}
// 메인 콘텐츠 리스트를 조회하기 위한 기본 SQL 쿼리입니다.
// 서브쿼리를 사용해 카테고리명, 중분류명, 연결된 학습목표명을 함께 가져옵니다.
$sql = 'SELECT c.content_id, c.category_code, c.category_group, c.title, c.is_offer, c.is_active, c.sort_order, c.description,c.description1, c.description2, c.description3, c.content_url, c.goal_code, c.issue_type_code, c.offer_id, c.start_date,
(SELECT COUNT(*) FROM edu_content_keywords ck WHERE ck.content_id=c.content_id AND ck.is_active=\'1\') as keyword_count,
(SELECT code_name FROM edu_codes WHERE group_code=\'CA100\' AND base_code=c.category_code LIMIT 1) as cat_name,
(SELECT code_name FROM edu_codes WHERE group_code=\'CA200\' AND base_code=c.category_group LIMIT 1) as group_name,
(SELECT title FROM edu_learning_goals WHERE goal_code=c.goal_code LIMIT 1) as goal_title,
(SELECT code_name FROM edu_codes WHERE group_code=\'IS100\' AND base_code=c.issue_type_code LIMIT 1) as issue_type_name
FROM edu_contents c';
// WHERE 조건이 하나라도 있다면 조합하여 SQL문에 덧붙입니다.
if ($where) {
$sql .= ' WHERE ' . implode(' AND ', $where);
}
// 정렬 순서를 지정합니다.
$sql .= ' ORDER BY c.category_code , c.category_group ,c.goal_code, c.content_id DESC';
// 완성된 쿼리를 실행하여 결과($rows)를 가져옵니다.
$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$rows = $stmt->fetchAll();
?>
콘텐츠 입력