Files
sam-kd/guiderail/search_guiderail.php
hskwon aca1767eb9 초기 커밋: 5130 레거시 시스템
- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경
- DB 연결 하드코딩 → .env 기반으로 변경
- MySQL strict mode DATE 오류 수정
2025-12-10 20:14:31 +09:00

151 lines
6.1 KiB
PHP

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
$pdo = db_connect();
// GET 파라미터 받기 - JavaScript에서 보내는 파라미터 이름과 일치
$selectedItem = $_GET['selectedItem'] ?? '';
$selectedUA = $_GET['selectedUA'] ?? '';
$selectedBendingCategory = $_GET['selectedBendingCategory'] ?? '';
$selectedName = $_GET['selectedName'] ?? '';
$selectedMaterial = $_GET['selectedMaterial'] ?? '';
$search = $_GET['search'] ?? '';
// SQL 쿼리 구성
$sql = "SELECT * FROM {$DB}.bending WHERE is_deleted IS NULL";
$params = [];
// 대분류 필터 (item_sep)
if (!empty($selectedItem)) {
$sql .= " AND item_sep = :selectedItem";
$params[':selectedItem'] = $selectedItem;
}
// 인정/비인정 필터 (model_UA)
if (!empty($selectedUA)) {
$sql .= " AND model_UA = :selectedUA";
$params[':selectedUA'] = $selectedUA;
}
// 중분류 필터 (item_bending)
if (!empty($selectedBendingCategory)) {
$sql .= " AND item_bending = :selectedBendingCategory";
$params[':selectedBendingCategory'] = $selectedBendingCategory;
}
// 품명 필터 (itemName)
if (!empty($selectedName)) {
$sql .= " AND itemName = :selectedName";
$params[':selectedName'] = $selectedName;
}
// 재질 필터 (material)
if (!empty($selectedMaterial)) {
$sql .= " AND material = :selectedMaterial";
$params[':selectedMaterial'] = $selectedMaterial;
}
// 검색어 필터 (모든 텍스트 필드에서 검색)
if (!empty($search)) {
$searchTerm = '%' . $search . '%';
$sql .= " AND (itemName LIKE :search_name OR material LIKE :search_material OR item_sep LIKE :search_sep OR item_bending LIKE :search_bending OR model_UA LIKE :search_ua)";
$params[':search_name'] = $searchTerm;
$params[':search_material'] = $searchTerm;
$params[':search_sep'] = $searchTerm;
$params[':search_bending'] = $searchTerm;
$params[':search_ua'] = $searchTerm;
}
$sql .= " ORDER BY num DESC";
// 디버깅용 로그
error_log("Search SQL: " . $sql);
error_log("Search Params: " . print_r($params, true));
$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
// guiderail.json 읽기
$jsonFile = $_SERVER['DOCUMENT_ROOT'].'/guiderail/guiderail.json';
$guiderailData = [];
if (file_exists($jsonFile)) {
$jsonContent = file_get_contents($jsonFile);
$guiderailData = json_decode($jsonContent, true);
if (!is_array($guiderailData)) $guiderailData = [];
}
// 결과 출력
if (empty($results)) {
echo '<tr><td colspan="9" class="text-center">검색 결과가 없습니다.</td></tr>';
} else {
foreach ($results as $row) {
$num = $row['num'];
$itemName = $row['itemName'] ?? '';
$material = $row['material'] ?? '';
$item_sep = $row['item_sep'] ?? '';
$item_bending = $row['item_bending'] ?? '';
$model_UA = $row['model_UA'] ?? '';
$imgdata = $row['imgdata'] ?? '';
$widthsum = $row['widthsum'] ?? '';
// guiderail.json에서 상세 데이터 찾기 (모델명+형태+마감+대분류+UA)
$summary = '';
// bending/write_form.php와 동일한 구조로 데이터 구성
$inputList = $row['inputList'] ?? [];
$bendingrateList = $row['bendingrateList'] ?? [];
$sumList = $row['sumList'] ?? [];
$colorList = $row['colorList'] ?? [];
$AList = $row['AList'] ?? [];
// 등록일 추가
$registration_date = $row['registration_date'] ?? '';
// echo '<pre>';
// print_r($row);
// echo '</pre>';
// 연신율계산 후 값 계산 (bending/write_form.php의 calculateSum 함수와 동일)
// $calcAfterList = [];
// $accumulated = 0;
// for ($i = 0; $i < count($inputList); $i++) {
// $inp = floatval($inputList[$i] ?? 0);
// $bend = floatval($bendingrateList[$i] ?? 0);
// $diff = $inp + $bend; // 입력값 + 연신율
// $calcAfterList[] = $diff;
// $accumulated += $diff;
// $sumList[$i] = $accumulated;
// }
$summary = htmlspecialchars(json_encode([
'inputList' => $inputList,
'bendingrateList' => $bendingrateList,
'calcAfterList' => $calcAfterList,
'sumList' => $sumList,
'colorList' => $colorList,
'AList' => $AList
], JSON_UNESCAPED_UNICODE), ENT_QUOTES, 'UTF-8');
echo '<tr data-num="' . $num . '" class="search-result-row">';
echo '<td class="text-center">';
echo '<input class="form-check-input bending-item-checkbox" type="checkbox" data-num="' . $num . '">';
echo '</td>';
echo '<td class="text-center order-number" style="width: 60px; font-weight: bold; color: #007bff;">-</td>';
echo '<td class="text-center">' . htmlspecialchars($registration_date, ENT_QUOTES, 'UTF-8') . '</td>';
echo '<td class="text-center">' . htmlspecialchars($item_sep, ENT_QUOTES, 'UTF-8') . '</td>';
echo '<td class="text-center">' . htmlspecialchars($model_UA, ENT_QUOTES, 'UTF-8') . '</td>';
echo '<td class="text-center">' . htmlspecialchars($item_bending, ENT_QUOTES, 'UTF-8') . '</td>';
echo '<td class="text-center">' . htmlspecialchars($itemName, ENT_QUOTES, 'UTF-8') . '</td>';
echo '<td class="text-center">' . htmlspecialchars($material, ENT_QUOTES, 'UTF-8') . '</td>';
echo '<td class="text-center">';
if ($imgdata) {
echo '<img src="/bending/img/' . htmlspecialchars($imgdata, ENT_QUOTES, 'UTF-8') . '"
class="search-zoomable-image"
style="width: 40px; height: 24px; object-fit: cover; cursor: pointer;"
data-src="/bending/img/' . htmlspecialchars($imgdata, ENT_QUOTES, 'UTF-8') . '">';
}
echo '</td>';
// 합계 셀: data-summary 속성 추가
echo '<td class="text-center mini-summary-trigger" ' . ($summary ? 'data-summary=\'' . $summary . '\'' : '') . '>' . htmlspecialchars($widthsum, ENT_QUOTES, 'UTF-8') . '</td>';
echo '</tr>';
}
}
?>