티스토리 뷰
php에서 키값을 서버에 저장하고 관리한다.
서버 받아주는 곳 :
isset($_REQUEST["originNum"]) ? $originNum = $_REQUEST["originNum"] : $originNum="";
xmlgrid을 임시키 부여한 곳에 복사하려고 할때, sql 이용해서 db의 값 복사
'parentKey'가 'num'과 같은 데이터를 임시번호 'aaaa'의 'parentKey'로 데이터 전체를 복사하는 코드
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
$pdo = db_connect();
$tmp_spec = "";
try {
$pdo->beginTransaction(); // 트랜잭션 시작
// 'parentKey'가 'num'과 같은 데이터를 선택하는 쿼리문
$sql_select = "SELECT * FROM dbeunsungbiz.xmlgrid WHERE parentKey = 'num'";
$stmh_select = $pdo->prepare($sql_select);
$stmh_select->execute();
// 선택된 데이터들을 복사하는 쿼리문
$sql_insert = "INSERT INTO dbeunsungbiz.xmlgrid (parentKey, childKey, value, depth) VALUES (?, ?, ?, ?)";
$stmh_insert = $pdo->prepare($sql_insert);
while ($row = $stmh_select->fetch(PDO::FETCH_ASSOC)) {
// 새로운 parentKey를 'aaaa'로 지정하여 데이터 복사
$stmh_insert->bindParam(1, $tmp_spec);
$stmh_insert->bindParam(2, $row['childKey']);
$stmh_insert->bindParam(3, $row['value']);
$stmh_insert->bindParam(4, $row['depth']);
$stmh_insert->execute();
}
$pdo->commit(); // 트랜잭션 커밋
} catch (PDOException $Exception) {
$pdo->rollBack(); // 에러 발생 시 트랜잭션 롤백
print "오류: ".$Exception->getMessage();
}
먼저 트랜잭션을 시작하여 데이터베이스 작업을 원자적으로 수행
그 다음, 'parentKey'가 'num'과 같은 데이터를 선택하는 쿼리문과 데이터를 복사하는 쿼리문을 작성
복사 과정에서는 선택된 데이터의 'parentKey'를 'aaaa'로 변경하여 복사
마지막으로, 모든 작업이 성공적으로 수행되면 트랜잭션을 커밋하고, 에러 발생 시 트랜잭션을 롤백
실제 이렇게 해서 성공한 코드는 아래에 기록함.
if($parentxml_num !=='')
{
try {
$pdo->beginTransaction(); // 트랜잭션 시작
// 'parentKey'가 'num'과 같은 데이터를 선택하는 쿼리문
$sql_select = "SELECT * FROM dbeunsungbiz." . $selectedmenubar . " WHERE parentKey = '$parentxml_num' " ;
$stmh_select = $pdo->prepare($sql_select);
$stmh_select->execute();
// 선택된 데이터들을 복사하는 쿼리문
$sql_insert = "INSERT INTO dbeunsungbiz.ETxmlgrid(parentKey, description , material , length , width , thickness , weights , donenum , donetime , laserfee , unitfee , bendingNum , bendingFee , bendingUnitFee , bendingAmount , paintingArea , paintingChoice , paintingUnit , paintingUnitFee , paintingAmount , lastworkUnitFee , lastwork , unit_Amount , est_Amount , device , outfitgrid , item_code_grid , item_name_grid , item_desc_grid , vat_grid , deadline_grid , memo_grid , jpgurl ) ";
$sql_insert .= " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? , ?, ?, ?, ?, ?, ?, ?, ?) ";
$stmh_insert = $pdo->prepare($sql_insert);
while ($row = $stmh_select->fetch(PDO::FETCH_ASSOC)) {
// 새로운 parentKey를 'tmpKey'로 지정하여 데이터 복사
$stmh_insert->bindValue(1, $tmpKey,PDO::PARAM_STR); // 임시부여키 적용함
$stmh_insert->bindValue(2 , $row['description'],PDO::PARAM_STR);
$stmh_insert->bindValue(3 , $row['material'],PDO::PARAM_STR);
$stmh_insert->bindValue(4 , $row['length'],PDO::PARAM_STR);
$stmh_insert->bindValue(5 , $row['width'],PDO::PARAM_STR);
$stmh_insert->bindValue(6 , $row['thickness'],PDO::PARAM_STR);
$stmh_insert->bindValue(7 , $row['weights'],PDO::PARAM_STR);
$stmh_insert->bindValue(8 , $row['donenum'],PDO::PARAM_STR);
$stmh_insert->bindValue(9 , $row['donetime'],PDO::PARAM_STR);
$stmh_insert->bindValue(10, $row['laserfee'],PDO::PARAM_STR);
$stmh_insert->bindValue(11, $row['unitfee'],PDO::PARAM_STR);
$stmh_insert->bindValue(12, $row['bendingNum'],PDO::PARAM_STR);
$stmh_insert->bindValue(13, $row['bendingFee'],PDO::PARAM_STR);
$stmh_insert->bindValue(14, $row['bendingUnitFee'],PDO::PARAM_STR);
$stmh_insert->bindValue(15, $row['bendingAmount'],PDO::PARAM_STR);
$stmh_insert->bindValue(16, $row['paintingArea'],PDO::PARAM_STR);
$stmh_insert->bindValue(17, $row['paintingChoice'],PDO::PARAM_STR);
$stmh_insert->bindValue(18, $row['paintingUnit'],PDO::PARAM_STR);
$stmh_insert->bindValue(19, $row['paintingUnitFee'],PDO::PARAM_STR);
$stmh_insert->bindValue(20, $row['paintingAmount'],PDO::PARAM_STR);
$stmh_insert->bindValue(21, $row['lastworkUnitFee'],PDO::PARAM_STR);
$stmh_insert->bindValue(22, $row['lastwork'],PDO::PARAM_STR);
$stmh_insert->bindValue(23, $row['unit_Amount'],PDO::PARAM_STR);
$stmh_insert->bindValue(24, $row['est_Amount'],PDO::PARAM_STR);
$stmh_insert->bindValue(25, $row['device'],PDO::PARAM_STR);
$stmh_insert->bindValue(26, $row['outfitgrid'],PDO::PARAM_STR);
$stmh_insert->bindValue(27, $row['item_code_grid'],PDO::PARAM_STR);
$stmh_insert->bindValue(28, $row['item_name_grid'],PDO::PARAM_STR);
$stmh_insert->bindValue(29, $row['item_desc_grid'],PDO::PARAM_STR);
$stmh_insert->bindValue(30, $row['vat_grid'],PDO::PARAM_STR);
$stmh_insert->bindValue(31, $row['deadline_grid'],PDO::PARAM_STR);
$stmh_insert->bindValue(32, $row['memo_grid'],PDO::PARAM_STR);
$stmh_insert->bindValue(33, $row['jpgurl'],PDO::PARAM_STR);
$stmh_insert->execute();
// print $row['description'];
}
$pdo->commit(); // 트랜잭션 커밋
} catch (PDOException $Exception) {
$pdo->rollBack(); // 에러 발생 시 트랜잭션 롤백
print "오류: ".$Exception->getMessage();
}
}
주문서, 판매서, 견적서 등 불러오는 객체에 따라 xmlgrid를 다르게 불러와야 하는 과제 생김 // 작업지시서에서 주문서 불러오기 실행
$("#workparentorderloadtBtn").click( function() {
// 버튼 비활성화
var btn = $(this);
if(btn.prop('disabled')) return false;
btn.prop('disabled', true);
const num = $("#num").val();
console.log('num saveBtn 변화 관찰 : ' + $("#num").val() );
popupCenter("./work/orderreloadlist.php" , '주문서 불러오기 검색', 1600, 810);
btn.prop('disabled', false); // 버튼 다시 활성화시킴
});
// 작업지시서에서 작업지시 불러오기 실행
$("#workloadtBtn").click( function() {
// 버튼 비활성화
var btn = $(this);
if(btn.prop('disabled')) return false;
btn.prop('disabled', true);
const num = $("#num").val();
console.log('num saveBtn 변화 관찰 : ' + $("#num").val() );
// ?selectedmenubar=work 항상 다름 주의
popupCenter("./work/reloadlist.php?selectedmenubar=work" , '작업지시서 불러오기 검색', 1600, 1000);
btn.prop('disabled', false); // 버튼 다시 활성화시킴
});
// 불러오기 메뉴 기록 (판매)
$("#selectedmenubar").val('estimate');
변수로 기록함.
xml파일의 이름을 초기화 한다.
// 부모번호 초기화
$("#parentxml_num").val('');
자바스크립트 문자열키 만들어주는 함수 그리고 문자공백 등 여부 체크하는 함수
// 6자리 문자열의 임시키만들어준다.
function generateRandomKey() {
const length = 6;
const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
let result = '';
for (let i = 0; i < length; i++) {
result += chars[Math.floor(Math.random() * chars.length)];
}
return result;
}
// 문자, 공백, 혹은 null일때 null 반환
function isNumValid(num) {
return !isNaN(num) && num !== null && num !== '' && num !== ' ';
}
// 레코드 번호를 저장한다.
if(isNumValid(num) !== null)
{
$("#num").val(num);
$("#tmpKey").val('' ); // 임시키 초기화
}
else
{
$("#num").val('');
$("#tmpKey").val(generateRandomKey() ); // 임시키 생성해서 넣어준다.
}
// 레코드 번호를 저장한다.
if(isNumValid(num) !== null)
{
$("#num").val(num);
$("#tmpKey").val('' ); // 임시키 초기화
}
else
{
$("#num").val('');
$("#tmpKey").val(generateRandomKey() ); // 임시키 생성해서 넣어준다.
}
레코드 수정여부 확인
if( isNumValid(num)!== null ) // 레코드 번호로 수정과 삽입을 구분함.
$("#SelectWork").val('update'); // 저장이 수정버튼의 역할을 함/ 파일 추가업로드시도 동작.
else
$("#SelectWork").val('insert');
saveBtn 이후
success : function(data){ // 이 후 코드 적용
$("#num").val(data);
$("#tmpKey").val(''); // 임시키 초기화
Ecount 클릭 후도 적용
$("#num").val(data);
$("#tmpKey").val(''); // 임시키 초기화
'IT tech Coding > php' 카테고리의 다른 글
[PHP+MYSQL] 레이져공정을 추출하는 테이블 제작을 위한 연구코드 (0) | 2023.05.08 |
---|---|
선택에 따라 progressbar 자유자재로 활용해서 화면 꾸며보기 (0) | 2023.04.21 |
php와 자바스크립트를 이용해서 checkbox 여러개를 체크하고 해제하고 하는 것을 배열에 저장해서 서버에 저장하는 코드 (0) | 2023.04.12 |
php 코드 로딩할때 '로딩중입니다' 화면에 표시하는 코드 (0) | 2023.03.22 |
[php] 전자결재 시스템 (작성함, 상신함, 미결함, 가결함, 부결함, 대기함, 참조함) 메뉴 제작하는 간단한 코드 구현 (0) | 2023.03.18 |
- Total
- Today
- Yesterday
- 티스토리챌린지
- 효율적코딩방법
- 오토핫키가이드
- 도면자동생성
- #파이썬패키징
- 테크에능한여성
- json파일편하게보는법
- chatGPT3.5파이썬버전
- General error: 2031
- Bootstrap 5
- 프로그래머생활
- 파이썬코드줄바꿈방법
- sql문장 날짜계산
- 구글드라이브API
- #InstallForge
- 엑셀보호
- 캐드자동작도
- json파일형태보기
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- 엑셀입력보호
- isset을 적용해야 하는 이유
- #프로그램설치
- 엑셀셀보호
- 스크립트작성기초
- 코딩튜토리얼
- 뫄프로그래밍
- ajax오류메시지
- 코딩효율성
- 1. #웹개발 2. #로트번호 3. #성적서보기 4. #ajax 5. #jquery 6. #php 7. #프론트엔드 8. #백엔드 9. #부트스트랩 10. #웹기능구현
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |