Initial commit: 교육 프로젝트 배포
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
<?php
|
||||
/**
|
||||
* _tmp_index_diag2.php — 키워드 상세 진단 (edu_keywords 복원용)
|
||||
*/
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
require_once __DIR__ . '/db_conn.php';
|
||||
$pdo = db_conn();
|
||||
|
||||
echo '<h2>EDU 키워드 상세 진단</h2>';
|
||||
echo '<style>table{border-collapse:collapse;margin:10px 0} td,th{border:1px solid #ccc;padding:4px 8px} .ok{color:green} .err{color:red} .warn{color:orange} pre{background:#f5f5f5;padding:8px;font-size:12px}</style>';
|
||||
|
||||
// 1. edu_content_keywords 전체 unique keyword_code 목록
|
||||
echo '<h3>1. edu_content_keywords - 전체 unique keyword_code</h3>';
|
||||
$rows = $pdo->query("
|
||||
SELECT keyword_code, COUNT(*) as cnt
|
||||
FROM edu_content_keywords
|
||||
WHERE is_active = '1' OR is_active IS NULL
|
||||
GROUP BY keyword_code
|
||||
ORDER BY keyword_code
|
||||
")->fetchAll();
|
||||
echo '<table><tr><th>keyword_code</th><th>연결 콘텐츠 수</th></tr>';
|
||||
foreach ($rows as $r) {
|
||||
echo "<tr><td>{$r['keyword_code']}</td><td>{$r['cnt']}</td></tr>";
|
||||
}
|
||||
echo '</table>';
|
||||
|
||||
// 2. edu_recommend_keywords 구조 및 데이터
|
||||
echo '<h3>2. edu_recommend_keywords 구조 및 데이터</h3>';
|
||||
$tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
|
||||
if (in_array('edu_recommend_keywords', $tables)) {
|
||||
$cols = $pdo->query("SHOW COLUMNS FROM edu_recommend_keywords")->fetchAll();
|
||||
echo '<b>컬럼:</b><br><table><tr><th>Field</th><th>Type</th><th>Key</th><th>Default</th></tr>';
|
||||
foreach ($cols as $c) {
|
||||
echo "<tr><td>{$c['Field']}</td><td>{$c['Type']}</td><td>{$c['Key']}</td><td>{$c['Default']}</td></tr>";
|
||||
}
|
||||
echo '</table>';
|
||||
$rows = $pdo->query("SELECT * FROM edu_recommend_keywords LIMIT 20")->fetchAll();
|
||||
if ($rows) {
|
||||
$keys = array_keys($rows[0]);
|
||||
echo '<table><tr>' . implode('', array_map(fn($k) => "<th>$k</th>", $keys)) . '</tr>';
|
||||
foreach ($rows as $r) {
|
||||
echo '<tr>' . implode('', array_map(fn($v) => '<td>' . htmlspecialchars((string)$v) . '</td>', $r)) . '</tr>';
|
||||
}
|
||||
echo '</table>';
|
||||
} else {
|
||||
echo '<p class="warn">데이터 없음</p>';
|
||||
}
|
||||
} else {
|
||||
echo '<p class="err">테이블 없음</p>';
|
||||
}
|
||||
|
||||
// 3. edu_user_keywords 전체 데이터
|
||||
echo '<h3>3. edu_user_keywords 전체</h3>';
|
||||
$rows = $pdo->query("SELECT * FROM edu_user_keywords ORDER BY member_id, keyword_code")->fetchAll();
|
||||
if ($rows) {
|
||||
$keys = array_keys($rows[0]);
|
||||
echo '<table><tr>' . implode('', array_map(fn($k) => "<th>$k</th>", $keys)) . '</tr>';
|
||||
foreach ($rows as $r) {
|
||||
echo '<tr>' . implode('', array_map(fn($v) => '<td>' . htmlspecialchars((string)$v) . '</td>', $r)) . '</tr>';
|
||||
}
|
||||
echo '</table>';
|
||||
} else {
|
||||
echo '<p class="warn">데이터 없음</p>';
|
||||
}
|
||||
|
||||
// 4. edu_codes 에서 KW 계열 코드 확인
|
||||
echo '<h3>4. edu_codes - KW 계열 코드 (keyword 관련)</h3>';
|
||||
$rows = $pdo->query("
|
||||
SELECT * FROM edu_codes
|
||||
WHERE base_code LIKE 'KW%'
|
||||
ORDER BY base_code
|
||||
")->fetchAll();
|
||||
if ($rows) {
|
||||
$keys = array_keys($rows[0]);
|
||||
echo '<table><tr>' . implode('', array_map(fn($k) => "<th>$k</th>", $keys)) . '</tr>';
|
||||
foreach ($rows as $r) {
|
||||
echo '<tr>' . implode('', array_map(fn($v) => '<td>' . htmlspecialchars((string)$v) . '</td>', $r)) . '</tr>';
|
||||
}
|
||||
echo '</table>';
|
||||
} else {
|
||||
echo '<p class="warn">KW 계열 코드 없음</p>';
|
||||
// edu_codes 전체 구조 확인
|
||||
$cols = $pdo->query("SHOW COLUMNS FROM edu_codes")->fetchAll();
|
||||
echo '<b>edu_codes 컬럼:</b><table><tr><th>Field</th><th>Type</th></tr>';
|
||||
foreach ($cols as $c) {
|
||||
echo "<tr><td>{$c['Field']}</td><td>{$c['Type']}</td></tr>";
|
||||
}
|
||||
echo '</table>';
|
||||
// 샘플 10건
|
||||
$sample = $pdo->query("SELECT * FROM edu_codes LIMIT 20")->fetchAll();
|
||||
if ($sample) {
|
||||
$keys = array_keys($sample[0]);
|
||||
echo '<table><tr>' . implode('', array_map(fn($k) => "<th>$k</th>", $keys)) . '</tr>';
|
||||
foreach ($sample as $r) {
|
||||
echo '<tr>' . implode('', array_map(fn($v) => '<td>' . htmlspecialchars((string)$v) . '</td>', $r)) . '</tr>';
|
||||
}
|
||||
echo '</table>';
|
||||
}
|
||||
}
|
||||
|
||||
// 5. edu_code_group 구조 확인
|
||||
echo '<h3>5. edu_code_group</h3>';
|
||||
if (in_array('edu_code_group', $tables)) {
|
||||
$rows = $pdo->query("SELECT * FROM edu_code_group LIMIT 20")->fetchAll();
|
||||
if ($rows) {
|
||||
$keys = array_keys($rows[0]);
|
||||
echo '<table><tr>' . implode('', array_map(fn($k) => "<th>$k</th>", $keys)) . '</tr>';
|
||||
foreach ($rows as $r) {
|
||||
echo '<tr>' . implode('', array_map(fn($v) => '<td>' . htmlspecialchars((string)$v) . '</td>', $r)) . '</tr>';
|
||||
}
|
||||
echo '</table>';
|
||||
}
|
||||
}
|
||||
|
||||
// 6. edu_contents 에서 keyword 관련 컬럼 값 샘플
|
||||
echo '<h3>6. edu_contents - category 관련 고유값</h3>';
|
||||
$rows = $pdo->query("
|
||||
SELECT category_code, category_group, COUNT(*) as cnt
|
||||
FROM edu_contents
|
||||
GROUP BY category_code, category_group
|
||||
ORDER BY category_group, category_code
|
||||
")->fetchAll();
|
||||
echo '<table><tr><th>category_code</th><th>category_group</th><th>콘텐츠 수</th></tr>';
|
||||
foreach ($rows as $r) {
|
||||
echo "<tr><td>{$r['category_code']}</td><td>{$r['category_group']}</td><td>{$r['cnt']}</td></tr>";
|
||||
}
|
||||
echo '</table>';
|
||||
|
||||
// 7. edu_contents 중 keyword 연결된 영상 샘플 (edu_content_keywords join)
|
||||
echo '<h3>7. edu_content_keywords ↔ edu_contents 조인 샘플</h3>';
|
||||
$rows = $pdo->query("
|
||||
SELECT ck.keyword_code, c.content_id, c.title, c.category_group, c.content_url
|
||||
FROM edu_content_keywords ck
|
||||
JOIN edu_contents c ON c.content_id = ck.content_id
|
||||
WHERE ck.is_active = '1'
|
||||
ORDER BY ck.keyword_code, c.content_id
|
||||
LIMIT 20
|
||||
")->fetchAll();
|
||||
if ($rows) {
|
||||
$keys = array_keys($rows[0]);
|
||||
echo '<table><tr>' . implode('', array_map(fn($k) => "<th>$k</th>", $keys)) . '</tr>';
|
||||
foreach ($rows as $r) {
|
||||
echo '<tr>' . implode('', array_map(fn($v) => '<td>' . htmlspecialchars((string)$v) . '</td>', $r)) . '</tr>';
|
||||
}
|
||||
echo '</table>';
|
||||
} else {
|
||||
echo '<p class="warn">결과 없음</p>';
|
||||
}
|
||||
|
||||
// 8. index.php 에서 사용하는 main_data 관련 api 로그 (있으면)
|
||||
echo '<h3>8. API 관련 파일 목록 확인</h3>';
|
||||
$apiDir = __DIR__ . '/api/';
|
||||
if (is_dir($apiDir)) {
|
||||
foreach (scandir($apiDir) as $f) {
|
||||
if ($f === '.' || $f === '..') continue;
|
||||
$fpath = $apiDir . $f;
|
||||
$size = filesize($fpath);
|
||||
echo "<li><b>$f</b> ({$size}bytes)</li>";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user