- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경 - DB 연결 하드코딩 → .env 기반으로 변경 - MySQL strict mode DATE 오류 수정
96 lines
4.0 KiB
PHP
96 lines
4.0 KiB
PHP
<?php
|
|
// 견적서 산출내역 저장루틴
|
|
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
|
|
header("Content-Type: application/json");
|
|
|
|
$mode = isset($_REQUEST['mode']) ? $_REQUEST['mode'] : '';
|
|
$num = isset($_REQUEST['num']) ? $_REQUEST['num'] : '';
|
|
$tablename = isset($_REQUEST['tablename']) ? $_REQUEST['tablename'] : '';
|
|
|
|
// JSON 데이터를 POST로 받아 처리
|
|
$detailJson = isset($_POST['detailJson']) ? $_POST['detailJson'] : '';
|
|
|
|
include '_request.php';
|
|
|
|
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
|
|
$pdo = db_connect();
|
|
|
|
try {
|
|
// 트랜잭션 시작
|
|
$pdo->beginTransaction();
|
|
|
|
// detailJson이 있는지 확인
|
|
$sql = "SELECT COUNT(*) AS cnt FROM $DB.$tablename WHERE num=?";
|
|
$stmh = $pdo->prepare($sql);
|
|
$stmh->bindValue(1, $num, PDO::PARAM_STR);
|
|
$stmh->execute();
|
|
$row = $stmh->fetch(PDO::FETCH_ASSOC);
|
|
|
|
if ($row['cnt'] > 0) {
|
|
// detailJson이 이미 존재하므로 업데이트 처리
|
|
// 자료수정
|
|
$update_log = date("Y-m-d H:i:s") . " - " . $_SESSION["name"] . " " . $update_log . "
";
|
|
|
|
$sql = "UPDATE $DB.$tablename SET detailJson=?, update_log=?, estimateTotal=?, EstimateFirstSum=?, EstimateUpdatetSum=?, EstimateDiffer=?, estimateSurang=? WHERE num=? LIMIT 1";
|
|
$stmh = $pdo->prepare($sql);
|
|
$stmh->bindValue(1, $detailJson, PDO::PARAM_STR); // JSON 데이터를 text로 저장
|
|
$stmh->bindValue(2, $update_log, PDO::PARAM_STR);
|
|
$stmh->bindValue(3, intval(str_replace(',', '', $estimateTotal)), PDO::PARAM_INT); // int 형태로 저장
|
|
$stmh->bindValue(4, intval(str_replace(',', '', $EstimateFirstSum)), PDO::PARAM_INT); // 추가된 필드
|
|
$stmh->bindValue(5, intval(str_replace(',', '', $EstimateUpdatetSum)), PDO::PARAM_INT); // 추가된 필드
|
|
$stmh->bindValue(6, intval(str_replace(',', '', $EstimateDiffer)), PDO::PARAM_INT); // 추가된 필드
|
|
$stmh->bindValue(7, intval(str_replace(',', '', $estimateSurang)), PDO::PARAM_INT); // 추가된 필드
|
|
$stmh->bindValue(8, $num, PDO::PARAM_STR);
|
|
|
|
$stmh->execute();
|
|
|
|
} else {
|
|
// detailJson이 없으므로 새로운 데이터로 삽입
|
|
$update_log = date("Y-m-d H:i:s") . " - " . $_SESSION["name"] . " ";
|
|
|
|
$sql = "INSERT INTO $DB.$tablename (num, detailJson, update_log, estimateTotal, EstimateFirstSum, EstimateUpdatetSum, EstimateDiffer, estimateSurang)
|
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
|
|
$stmh = $pdo->prepare($sql);
|
|
$stmh->bindValue(1, $num, PDO::PARAM_STR);
|
|
$stmh->bindValue(2, $detailJson, PDO::PARAM_STR); // JSON 데이터를 text로 저장
|
|
$stmh->bindValue(3, $update_log, PDO::PARAM_STR);
|
|
$stmh->bindValue(4, intval(str_replace(',', '', $estimateTotal)), PDO::PARAM_INT); // int 형태로 저장
|
|
$stmh->bindValue(5, intval(str_replace(',', '', $EstimateFirstSum)), PDO::PARAM_INT); // 추가된 필드
|
|
$stmh->bindValue(6, intval(str_replace(',', '', $EstimateUpdatetSum)), PDO::PARAM_INT); // 추가된 필드
|
|
$stmh->bindValue(7, intval(str_replace(',', '', $EstimateDiffer)), PDO::PARAM_INT); // 추가된 필드
|
|
$stmh->bindValue(8, intval(str_replace(',', '', $estimateSurang)), PDO::PARAM_INT); // 추가된 필드
|
|
|
|
$stmh->execute();
|
|
}
|
|
|
|
// 트랜잭션 커밋
|
|
$pdo->commit();
|
|
|
|
// 응답 데이터 생성
|
|
$data = [
|
|
'num' => $num,
|
|
'mode' => ($row['cnt'] > 0) ? 'modify' : 'insert',
|
|
'estimateTotal' => $estimateTotal,
|
|
'EstimateFirstSum' => $EstimateFirstSum,
|
|
'EstimateUpdatetSum' => $EstimateUpdatetSum,
|
|
'EstimateDiffer' => $EstimateDiffer,
|
|
'estimateSurang' => $estimateSurang,
|
|
'status' => 'success'
|
|
];
|
|
|
|
echo json_encode($data, JSON_UNESCAPED_UNICODE);
|
|
} catch (PDOException $Exception) {
|
|
// 예외 처리
|
|
error_log("오류: " . $Exception->getMessage());
|
|
$pdo->rollBack(); // 트랜잭션 롤백
|
|
http_response_code(500);
|
|
echo json_encode(['error' => $Exception->getMessage()]);
|
|
} catch (Exception $e) {
|
|
error_log("오류: " . $e->getMessage());
|
|
$pdo->rollBack(); // 트랜잭션 롤백
|
|
http_response_code(500);
|
|
echo json_encode(['error' => $e->getMessage()]);
|
|
}
|
|
|
|
?>
|