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

135 lines
4.8 KiB
PHP

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
header("Content-Type: application/json");
$num = isset($_REQUEST['num']) ? $_REQUEST['num'] : '';
$tablename = isset($_REQUEST['tablename']) ? $_REQUEST['tablename'] : 'output';
$ACIaskDate = isset($_REQUEST['ACIaskDate']) ? $_REQUEST['ACIaskDate'] : '';
$ACIdoneDate = isset($_REQUEST['ACIdoneDate']) ? $_REQUEST['ACIdoneDate'] : '';
// JSON 데이터를 저장할 경로 설정
$jsonFilePath = "../output/real_json/" . $num . ".json";
/**
* 모든 필드가 빈 값인지 확인하는 함수
* 각 항목은 객체 형태로 저장되며,
* - 일반 입력 요소: 'value' 값이 빈 문자열인지,
* - 체크박스: 'checked'가 '1'이 아닌지 확인합니다.
*/
function isAllEmpty($data) {
$keys = ['inputValue', 'beforeWidth', 'beforeHeight', 'afterWidth', 'afterHeight', 'recordComent', 'exceptCheck'];
foreach ($keys as $key) {
if (isset($data[$key]) && is_array($data[$key])) {
foreach ($data[$key] as $item) {
// 일반 입력 요소의 경우
if (isset($item['value']) && trim($item['value']) !== '') {
return false;
}
// 체크박스의 경우 (값이 '1'이면 체크된 상태)
if (isset($item['checked']) && $item['checked'] === '1') {
return false;
}
}
}
}
return true;
}
if (isset($_POST['realiList'])) {
$realiList_jsondata = json_decode($_POST['realiList'], true);
if ($realiList_jsondata === null && json_last_error() !== JSON_ERROR_NONE) {
echo json_encode([
'error' => 'Invalid JSON data provided.',
'json_error' => json_last_error_msg()
], JSON_UNESCAPED_UNICODE);
// 기존 JSON 파일 삭제
if (file_exists($jsonFilePath)) {
unlink($jsonFilePath);
}
exit;
}
// 만약 모든 데이터가 빈 값이라면, JSON 파일을 삭제하고 DB 업데이트 시 빈 값으로 처리
if (isAllEmpty($realiList_jsondata)) {
if (file_exists($jsonFilePath)) {
unlink($jsonFilePath);
}
// 데이터베이스 업데이트: realiList 필드를 빈 값으로 저장
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
$pdo = db_connect();
try {
$pdo->beginTransaction();
$sql = "UPDATE {$DB}.{$tablename} SET realiList=? WHERE num=? LIMIT 1";
$stmh = $pdo->prepare($sql);
$stmh->bindValue(1, '', PDO::PARAM_STR); // 빈 값 저장
$stmh->bindValue(2, $num, PDO::PARAM_STR);
$stmh->execute();
$pdo->commit();
} catch (PDOException $Exception) {
$pdo->rollBack();
error_log("오류: " . $Exception->getMessage());
echo json_encode(['error' => $Exception->getMessage()], JSON_UNESCAPED_UNICODE);
exit;
}
echo json_encode([
'num' => $num,
'message' => 'JSON data is empty. JSON file deleted and database updated.',
'realiList_jsondata' => $realiList_jsondata
], JSON_UNESCAPED_UNICODE);
exit;
}
// 기존 JSON 파일 삭제 (덮어쓰기 위해)
if (file_exists($jsonFilePath)) {
unlink($jsonFilePath);
}
// JSON 데이터를 파일에 저장
$saveResult = file_put_contents($jsonFilePath, json_encode($realiList_jsondata, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
if ($saveResult === false) {
echo json_encode(['error' => 'Failed to write JSON file.'], JSON_UNESCAPED_UNICODE);
exit;
}
} else {
echo json_encode(['error' => 'No realiList data provided.'], JSON_UNESCAPED_UNICODE);
exit;
}
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
$pdo = db_connect();
try {
$pdo->beginTransaction();
// 데이터베이스에 JSON 파일 경로 저장
$sql = "UPDATE {$DB}.{$tablename} SET realiList=? WHERE num=? LIMIT 1";
$stmh = $pdo->prepare($sql);
$stmh->bindValue(1, $jsonFilePath, PDO::PARAM_STR);
$stmh->bindValue(2, $num, PDO::PARAM_STR);
$stmh->execute();
$pdo->commit();
} catch (PDOException $Exception) {
$pdo->rollBack();
error_log("오류: " . $Exception->getMessage());
echo json_encode(['error' => $Exception->getMessage()], JSON_UNESCAPED_UNICODE);
exit;
}
$data = [
'num' => $num,
'realiList source' => $_POST['realiList'],
'json_file' => $jsonFilePath,
'realiList_jsondata' => $realiList_jsondata,
'message' => 'JSON data saved to file and database updated successfully.'
];
echo json_encode($data, JSON_UNESCAPED_UNICODE);
?>